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

Javascript 通过NodeJS/Webix在MongoDB中添加数据,javascript,node.js,mongodb,express,webix,Javascript,Node.js,Mongodb,Express,Webix,这是我关于堆栈溢出的第一篇文章,我希望得到帮助,就像我可以在需要时帮助别人一样。我正在尝试使用一个用户友好的界面来创建我自己的数据库,以便在我的数据表中添加/编辑/删除值 我可以从我的MongoDB编辑/删除数据,但是我不能从我的html页面的数据表中添加任何内容 如果您看到有什么问题(现在我迷路了!):我想我的问题是在添加部分出现的,因为当我尝试从UI在数据库中添加某些内容时,我的终端中会出现blabla错误消息。 var express = require('express'); var p

这是我关于堆栈溢出的第一篇文章,我希望得到帮助,就像我可以在需要时帮助别人一样。我正在尝试使用一个用户友好的界面来创建我自己的数据库,以便在我的数据表中添加/编辑/删除值

我可以从我的MongoDB编辑/删除数据,但是我不能从我的html页面的数据表中添加任何内容

如果您看到有什么问题(现在我迷路了!):我想我的问题是在添加部分出现的,因为当我尝试从UI在数据库中添加某些内容时,我的终端中会出现blabla错误消息。

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时,我可以看到:

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
当然,我始终无法向数据库添加任何内容。

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);

最后

我刚刚将Mongoskin从1.3.20更新到最新版本2.1.0,一切正常),非常高兴


非常感谢大家的帮助

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

app.use(express.urlencoded());
代替此用途:

app.use(bodyParser.urlencoded());

请详细说明错误。我猜错误来自代码中的“添加”部分,因为当我尝试在UI中添加值时,我可以在我的终端中看到错误消息“BLABLABLA”(对不起,我是法国人)。你能记录错误消息
console.log(err)并用消息更新您的问题?您是否尝试过使用insertOne/insertMany而不仅仅是insert?顺便说一句,我不知道这是否真的是你的计划,以保持本土,但你可以猫鼬为例,这将有助于互动!Hi chridam这是console.log(err):“MongoError:驱动程序与此服务器版本不兼容”Hi rule当我尝试使用insertOne/insertMany时,我有此错误:“TypeError:db.test2test.insertOne不是函数”感谢guysThanks Sourbh Gupta的帮助,但在更改后,结果相同。。