最近在用node写接口,发送请求后给数据库插入数据和查询数据显示在页面中, 发现get请求查询数据的操作可以实现, 而发送post请求向数据库插入数据无法实现,返回的errno为1062,
先贴数据库配置
const mysql = require('mysql');
const pool = mysql.createPool({
connectionLimit : 10, // 池子里可以放多少桥
host : 'localhost',
user : 'root',
password : '',
database : 'test_2'
})
// 调用test,test内部调用pool.query
function test(sql,arr,callback){
// arguments
// apply,call
// query方法调用去查数据库
pool.query.apply(pool,arguments)
// pool.query(sql,arr, callback)
}
test('select* from salary where id = 33',function(err,result){console.log(111)})
//向外提供方法
module.exports = {
test
}
再贴接口配置
const bodyParser = require('body-parser')
// 引入封装的db.js(数据库的操作)
const db = require('./db.js')
const express = require('express')
const app = express()
// 自动根据用户请求的地址从www目录读取对应的文件,然后响应给浏览器
app.use(express.static('./www'))
// application/x-www-form-urlencoded
app.use(bodyParser.urlencoded()) // form-data
// application/json
app.use(bodyParser.json()) // json // json {}
//1. 接收请求,保存用户的聊天信息
// arg: msg聊天内容, nickname,昵称
app.post('/addinfo',(req, res) => {
// body-parser会把post请求的参数放到req.body
// 把前端的参数保存到数据库.
db.test('insert chats(nickname,msg) values(?,?)',[req.body.nickname,req.body.msg], (err, results) => {
console.log("sendsuccessful");
if(err){
res.send(err)
return
}else{
res.send('ok')
}
})
})
// 2.接收请求,到数据库读取聊天记录,并响应给用户
app.get('/getlist',(req, res)=>{
// 到数据库读取数据,并响应给前端
db.test('select * from chats',(err, result)=>{
if(err){
res.send(err)
return;
}
res.send(result)
})
})
app.listen(8000)
解决方法
我发现,原因在于在数据库里面建立表的时候,id作为主键没有设置自动递增,数据没法更新。
重新建表后,id设置为自动递增,问题解决。