我遇到了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 - -
答案 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
关键字。我相信这会解决你的问题。
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;
答案 3 :(得分:0)
尝试使用以下代码。插入时,您需要使用新关键字
Codename One -> Refresh Client Libs