Добавление данных в MongoDB через NodeJS/Webix

Это мой первый пост на Stack Overflow, и я надеюсь, что мне помогут, как я могу помочь кому-то, если это необходимо. Я пытаюсь сделать свою собственную БД с удобным интерфейсом для значений Add/Edit/Del в моей таблице данных.

Я могу редактировать/удалять данные из моей MongoDB, но я не могу ничего добавить к ним из моей базы данных на моей html-странице.

Если вы видите что-то не так (прямо сейчас я потерялся!): Я думаю, моя проблема локализована в моей части добавления, потому что, когда я пытаюсь добавить что-то в свою базу данных из пользовательского интерфейса, в моем терминале появляется сообщение об ошибке 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(err) :

[MongoError: driver is incompatible with this server version] name: 'MongoError'

Когда я запускаю 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

И, конечно же, я всегда не могу ничего добавить в свою базу данных..


НАКОНЕЦ

Я только что обновил Mongoskin с 1.3.20 до последней версии 2.1.0 и все работает нормально )) так счастлив

Большое спасибо всем за помощь


person Edouard    schedule 19.12.2016    source источник
comment
Пожалуйста, немного расширьте, что не так.   -  person Mr_Pouet    schedule 19.12.2016
comment
Я предполагаю, что ошибка возникает из-за добавления части моего кода, потому что, когда я пытаюсь добавить значение в свой пользовательский интерфейс, я вижу свое сообщение об ошибке BLABLABLA (извините, я француз) в моем терминале.   -  person Edouard    schedule 19.12.2016
comment
Можете ли вы записать сообщение об ошибке console.log(err); и дополнить свой вопрос сообщением?   -  person chridam    schedule 19.12.2016
comment
Вы пытались использовать insertOne / insertMany вместо простой вставки? И, кстати, я не уверен, действительно ли это ваш план сохранить родной, но вы могли бы, например, мангуста, это поможет с этим взаимодействием!   -  person rule    schedule 19.12.2016
comment
Привет, chridam, это console.log(err): MongoError: драйвер несовместим с этой версией сервера. Привет, правило, когда я пытаюсь использовать insertOne/insertMany. У меня возникает эта ошибка: TypeError: db.test2test.insertOne не является функцией. Спасибо, ребята.   -  person Edouard    schedule 19.12.2016
comment
Я попытался обновить NodeJS с 6.9.1 до 7.2.1, но сейчас мои данные не загружаются в мою таблицу...   -  person Edouard    schedule 19.12.2016


Ответы (1)


может быть, ваша ошибка связана с тем, что вызов POST не нашел значения в req.body. Вам потребовался анализатор тела, но вы его не использовали.

app.use(express.urlencoded());

вместо этого используйте:

app.use(bodyParser.urlencoded());
person Sourbh Gupta    schedule 19.12.2016
comment
Спасибо Sourbh Gupta за вашу помощь, но после того, как вы его изменили, результат тот же. - person Edouard; 19.12.2016