通过NodeJS / Webix在MongoDB中添加数据
这是我在堆栈溢出的第一篇文章,我希望能得到帮助,就像我可以帮助某人,如果需要的话。 我试图做我自己的数据库用户界面友好的添加/编辑/ Del值在我的数据表中。
我可以编辑/从我的MongoDB中 删除数据,但我不能从我的HTML页面的数据添加任何东西。
如果你可以看到错误的东西(现在我迷路了): 我想我的问题已经在我的添加部分中进行了本地化,因为当我尝试从UI添加一些东西到我的数据库时,我的terminal中出现了BLABLABLA错误消息。
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);
更新
新问题的家伙,当我尝试添加数据,我有这个消息通过console.log(错误) :
[MongoError: driver is incompatible with this server version] name: 'MongoError'
当我从shell中运行Mongo时,可以看到:
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
我用 :
MongoDB 3.4 Express 3.5.3 Mongoskin ~1.3.20
当然,我总是不能添加任何东西到我的分贝..
最后
我刚刚从1.3.20 更新到2.1.0最后一个版本的Mongoskin , 一切正常 ))很高兴
非常感谢大家的帮助
可能是你的错误是由于POST调用没有在req.body中find值。 你需要body-parser,但是没有使用它。
app.use(express.urlencoded());
而不是这个用途:
app.use(bodyParser.urlencoded());
- express-validation会抛出一个错误:错误('请提供一个validation模式')
- 数据传输对象(DTO)是否用Node.js / Express / MongoDB构buildREST API?
- Express 4 session TypeError:对象不是一个函数
- 如何匹配一个string的结尾不能加上
- 在基于express.js的应用程序中集中error handling
- 在node.js(快速框架)中build立访问日志
- 正则expression式匹配string中的开始([)和结束(,)(仅)
- res.send()express.js自动redirect
- 节点js express.compiler错误