这是我在Stack Overflow上的第一篇文章,我希望得到帮助,就像我可以在必要时帮助某人一样。我正在尝试使用用户友好的界面为我的数据表中的Add / Edit / Del值创建自己的数据库。
我可以从 MongoDB 中编辑/删除数据,但我无法添加来自我的html页面中的数据表。
如果你看错了(现在我迷路了!):我想我的问题已经在我的添加部分本地化了,因为当我尝试从UI中添加一些内容时,我有BLABLABLA错误消息在我的终端。
INSUFFICIENT_DATA
已更新
新问题的人,当我尝试添加数据时,我通过 console.log(错误)获取此消息:
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
//connect to the mongo
var db = require('mongoskin').db("mongodb://localhost/TESTING", { w: 0});
db.bind('test2test');
//create the app instance
var app = express();
//serve static files
app.use(express.static(path.join(__dirname, 'public')));
//parse POST data
app.use(express.json());
app.use(express.urlencoded());
//response for saving operations
function after_update(err, res, test2test){
if (err){
res.status(500);
res.send({ error:err.toString() });
} else {
res.send(record || {});
}
}
//data loading
app.get('/data', function(req, res){
db.test2test.find().toArray(function(err, data){
for (var i = 0; i < data.length; i++){
//map _id to id
data[i].id = data[i]._id;
delete data[i]._id;
}
res.send(data);
});
});
//adding
app.post('/data', function(req, res){
db.test2test.insert(req.body, function(err, test2test){
if (err) {
console.log("BLABLABLA");
return res.send({ status:"error" });
}
res.send({ newid:req.body._id });
});
});
//updating
app.put('/data/:id', function(req, res){
db.test2test.updateById(req.param("id"), req.body, function(err){
if (err) return res.send({ status:"error" });
res.send({});
});
});
//deleting
app.delete('/data/:id', function(req, res){
db.test2test.removeById(req.param("id"), req.body, function(err){
if (err) return res.send({ status:"error" });
res.send({});
});
});
app.listen(3000);
当我从shell中运行Mongo时,我可以看到:
[MongoError: driver is incompatible with this server version] name: 'MongoError'
我用:
MongoDB shell version v3.4.0
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.2.11
WARNING: shell and server versions do not match
当然,我总是无法向我的数据库添加任何内容..
最终
我只是更新Mongoskin 从1.3.20到最后一个版本2.1.0并且一切正常))很高兴
非常感谢大家的帮助
答案 0 :(得分:1)
可能是你的错误是由于POST调用没有在req.body中找到值。 你需要身体解析器,但没有使用它。
app.use(express.urlencoded());
而不是这个用途:
app.use(bodyParser.urlencoded());