Node Mongoose没有保存帖子请求

时间:2016-07-21 16:11:39

标签: javascript node.js mongodb mongoose

我正在努力让节点将帖子请求保存到我的MongoDB,我没有收到任何错误,但数据库中没有存储任何内容。

modules.js

var mongoose      = require ( 'mongoose' ),
Schema        = mongoose.Schema,
modulesSchema = new Schema (
    {
        ModuleID: Number,
        ModuleName: String,
        ModuleLeader: String
    }, { _id: false }
);

module.exports = mongoose.model ( 'Module', modulesSchema );

server.js

var express    = require ( 'express' ),
    app        = express (),
    bodyParser = require ( 'body-parser' ),
    jwt        = require ( 'jsonwebtoken' ),
    mongoose   = require ( 'mongoose' ),
    mongoUri   = 'mongodb://feedbacker:feedbacker@ds011472.mlab.com:11472/feedbacker';
    secretKey  = 'f33db3ck4r';

// database in the cloud
mongoose.connect (
    mongoUri, function ( error )
    {
        if ( error )
        {
            console.error ( 'Mongoose Error! Error: ', error );
        }
    }
);

// bodyparser to read and post json data
app.use ( bodyParser.urlencoded ( { extended: true } ) );
app.use ( bodyParser.json () );

// load models
var User    = require ( './models/user' ),
    Student = require ( './models/student' ),
    Module  = require ( './models/modules' );

router.route('/module').post(function(req, res) {
    var module = new Module();
    module.ModuleID = req.body.moduleID;
    module.ModuleName = req.body.moduleName;
    module.ModuleLeader = req.body.moduleLeader;

    module.save(function(err) {
        if (err)
            return res.send(err);

        res.json({ message: 'Module Created!' });
    });
});
// register router
app.use ( '/api', router );

我删除了一大块server.js,因为大多数是中间件和正在进行的其他路由不会影响这一点。

我用Postman来测试这个,我没有收到res.json消息。 但如果我也改变路由:

router.route('/module').post(function(req, res) {
var module = new Module();
module.ModuleID = req.body.moduleID;
module.ModuleName = req.body.moduleName;
module.ModuleLeader = req.body.moduleLeader;

module.save(function(err) {
    if (err)

    res.json({ message: 'Module Created!' });
});
});

这是删除以下行:

return res.send(err);

这确实会发送回复'模块已创建!' ......所以出现这种情况的原因是什么?因为我在任何地方都没有错误,也没有任何存储。是的,我的数据库详细信息设置正确

任何有助于帮助的人。

2 个答案:

答案 0 :(得分:0)

啊,结果是使用了_id false并没有很好地将我的模型更改为:

var mongoose      = require ( 'mongoose' ),
    Schema        = mongoose.Schema,
    modulesSchema = new Schema (
        {
            _id: Number,
            moduleName: String,
            moduleLeader: String
        }
    );

module.exports = mongoose.model ( 'Module', modulesSchema );

答案 1 :(得分:0)

Heyy不确定,但如果出现错误,您将返回res.json({message:' Module Created!'})

module.save(function(err) {
    if (err)

    res.json({ message: 'Module Created!' });

}); 所以在纠正之后尝试一次这可能是有效的...... 并尝试像这样运行,以检查你得到了什么respoonse

module.save(function(err,data) {
    if (err){
     console.log("Error",err)
     return
    }
    console.log(data)
    res.json({ message: 'Module Created!' });
 });