不要插入Nodejs Mongoose

时间:2017-10-28 00:04:01

标签: node.js mongodb mongoose

我遇到了Mongoose Nodejs的问题

这是我的控制器代码,用于使用导入的另一个文件中的Schema User在数据库中插入用户。

  router.post('/insert', function insertUsert(req, res){

    var newUser =  User({
        name: req.body.name,
        username: req.body.username, 
        password: req.body.password, 
        admin: false        
     });
     newUser.save(function(err){
        if(err){
          res.status(400).send(err);
        }else{
          res.status(201).send("User Inserted)");
        }
     })
    });

这是我的连接Mongoose:

var dbURI = 'mongodb://localhost/trabbel';

if (process.env.NODE_ENV === 'production') {

    dbURI = process.env.MONGOLAB_URI || 'mongodb://<>:<>@ds133465.mlab.com:33465/locations';
    mongoose.connect(dbURI);

    console.log(dbURI);
}

// CONNECTION EVENTS

mongoose.connection.on('connected', function() {    
    console.log('Mongoose connected to ' + dbURI);    
});

当我在路线中使用Postman执行时:

POST /user/insert - - ms - -

4 个答案:

答案 0 :(得分:1)

.connect位于仅在生产时运行的条件内,将其转为:

if (process.env.NODE_ENV === 'production') {
    dbURI = process.env.MONGOLAB_URI || 'mongodb://<>:<>@ds133465.mlab.com:33465/locations';
}
mongoose.connect(dbURI);
console.log(dbURI);

答案 1 :(得分:1)

试试吧

在router.post

中传递函数的引用
    router.post('/insert', insertUsert);

    function insertUsert(req, res, next){
        const newUser = new User({
            name: req.body.name,
            username: req.body.username, 
            password: req.body.password, 
            admin: false

         })

newUser.save().then(function(user) {

    if(err) res.status(400).json({"message": err})
    res.status(200).json(user)

})
        }

答案 2 :(得分:0)

我认为对您的代码进行此调整会使其正常工作。我发现在创建用户模型实例时忘记了new关键字。我相信这会解决你的问题。

&#13;
&#13;
 router.post('/insert', function insertUsert(req, res, next){

    var newUser = new User({
        name: req.body.name,
        username: req.body.username, 
        password: req.body.password, 
        admin: false

     });
     newUser.save(function(err){
        if(err){
          return next(err);
        }
        res.status(201).send("User Inserted)");
     })
    });
&#13;
&#13;
&#13;

答案 3 :(得分:0)

尝试使用以下代码。插入时,您需要使用新关键字

Codename One -> Refresh Client Libs