user.save()不会在mongodb中保存(不执行任何操作)

时间:2018-09-25 09:49:21

标签: node.js mongodb mongoose

我正在尝试在MongoDB中保存用户,但似乎不起作用。我不知道为什么。我只能告诉您的是,该代码正在.pre save函数中运行,但是没有输入save函数promise。

您能告诉我为什么它不保存在基数中吗?

前端提交功能

handleSubmit(user){
    console.log(user);
    axios.post('http://localhost:3000/signup', user)
        .then(data => {
            console.log(data);
            console.log("OBVIOUSLY I DON'T SEE THIS LOG EITHER");
        }
    );
}

app.js(node.js文件)

app.post('/signup', urlencodedParser, function(req, res){
let user = new User(req.body);
user.save().then(() => {
    console.log("I DON'T SEE THIS LOG");
});
res.end();
});

user.js(node.js文件)

UserSchema.pre("save", (next) => {
console.log(this);
console.log("I SEE THIS LOG");
next();
});
const User = mongoose.model('user', UserSchema);

module.exports = User;

3 个答案:

答案 0 :(得分:0)

请尝试使用回调代替您的PermissionEvaluator上的PermissionEvaluator

.then()

答案 1 :(得分:0)

可能是一个愚蠢的问题,但您在app.js中的用户是否未定义? 也许console.log req.body。因为我不认为您是从一个用户开始。

另一个提示:
改用猫鼬的create函数,您会在构造文档中找到一个示例:
https://mongoosejs.com/docs/models.html

答案 2 :(得分:0)

您正在保存user之前关闭请求。

res.end()移至then函数中以解决该问题。

或者您可以制作一个async function(req, res)并将await放在user.save()之前,删除then并等待数据库响应,如下所示:

app.post('/signup', urlencodedParser, async function(req, res) {
  let user = new User(req.body);
  await user.save();
  res.end();
});