能运行起来的最小mvp代码,前端有个表格可以增删改,对后端mysql数据库进行操作。请提供前端后端所有代码给我。
时间: 2024-09-21 22:13:14 浏览: 99
为了创建一个简单的MVP(Model-View-Presenter)架构的项目,我们将分前端(React.js + Axios)和后端(Node.js + Express + Mongoose)两部分来构建。这里是一个简化的示例:
**前端(React) - App.js (部分)**
```jsx
import React, { useState } from 'react';
import axios from 'axios';
function Table() {
const [rows, setRows] = useState([]);
const [newRow, setNewRow] = useState({ id: '', column1: '', column2: '' });
function handleAdd() {
axios.post('/api/data', newRow).then(res => setRows([...rows, res.data]));
}
// ...其他删除和修改操作类似,这里省略
return (
<table>
{/* 表格列 */}
<tbody>
{rows.map(row => (
<tr key={row.id}>
<td>{row.column1}</td>
<td>{row.column2}</td>
{/* 添加编辑和删除按钮 */}
</tr>
))}
</tbody>
<tfoot>
<tr>
<td><input type="text" value={newRow.column1} onChange={(e) => setNewRow({...newRow, column1: e.target.value})} /></td>
<td><input type="text" value={newRow.column2} onChange={(e) => setNewRow({...newRow, column2: e.target.value})} /></td>
<td><button onClick={handleAdd}>添加</button></td>
</tr>
</tfoot>
</table>
);
}
export default Table;
```
**后端(Node.js + Express) - server.js**
```javascript
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
// 连接数据库(假设有一个名为"data"的表)
mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('Connected to MongoDB'))
.catch(err => console.error('Error connecting to DB:', err));
const DataSchema = new mongoose.Schema({
column1: String,
column2: String,
});
const Data = mongoose.model('Data', DataSchema);
app.post('/api/data', async (req, res) => {
try {
const newData = new Data(req.body);
await newData.save();
res.status(201).json(newData);
} catch (error) {
res.status(400).json({ error: 'Failed to add data' });
}
});
// 其他CRUD操作接口,例如DELETE、UPDATE等,需要相应处理
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
```
这是一个非常基础的示例,实际应用中可能需要更完善的错误处理和验证。记住,你需要安装必要的依赖,并配置好数据库连接。
阅读全文