通过NodeJS / Webix在MongoDB中添加数据

时间:2016-12-19 10:54:02

标签: javascript node.js mongodb express webix

这是我在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并且一切正常))很高兴

非常感谢大家的帮助

1 个答案:

答案 0 :(得分:1)

可能是你的错误是由于POST调用没有在req.body中找到值。 你需要身体解析器,但没有使用它。

app.use(express.urlencoded());

而不是这个用途:

app.use(bodyParser.urlencoded());