我正在尝试在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;
答案 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();
});