Exc*_*ons 4 mongoose mongodb node.js
我有这个代码
User.findOne({ email: req.body.email }, function(err, user) {
if (user) {
return res.status(400).json([{ msg: 'The email address you have entered is already associated with another account.' }]);
}
user = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password,
mobile: req.body.mobile
});
user.save(function(err) {
res.json({ token: generateToken(user), user: user });
});
});
Run Code Online (Sandbox Code Playgroud)
我尝试用邮递员发送请求,我确实得到了用户对象的回复,这意味着保存功能中没有错误
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJleGNlcHRpb25zLnNnIiwic3ViIjoiNTc5NWQ0NzQxYmEzZWQwODE1ZTgzY2NmIiwiaWF0IjoxNDY5NDM3MDQ0LCJleHAiOjE0NzAwNDE4NDR9.2otkcPkJgsXvR8QOHAojDJ5YCxR7Uc2E4ApS77T55F8",
"user": {
"__v": 0,
"created_at": "2016-07-25T08:57:24.612Z",
"updated_at": "2016-07-25T08:57:24.612Z",
"name": "Test",
"email": "Test@hotmail.com",
"password": "$2a$10$3UmABiDPeo6iHZ.DFbwOO.1ANpUWQmwr86bYbTmRuFedsbDcE0bbC",
"mobile": 12345,
"_id": "5795d4741ba3ed0815e83ccf"
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的数据库中没有这个条目.我用Robomongo检查了我的数据库,我确信没有数据.我错过了什么?
保存集合时无法处理错误,请更换您的user.save函数
user.save(function(err){
if(err){
console.log(err);
return;
}
res.json({ token: generateToken(user), user: user });
});
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您将能够跟踪数据是否已保存以及可能存在的相关错误.
这与OP的具体情况无关,但是对于其他在修改Mixed对象属性后尝试保存失败的人,您必须致电markModified(path)让Mongoose知道该属性已更改。
person.anything = { x: [3, 4, { y: "changed" }] }; // anything is 'Mixed' in the schema
person.markModified('anything');
person.save(); // anything will now get saved
Run Code Online (Sandbox Code Playgroud)
在此处查看猫鼬文档的“混合”部分
小智 5
我知道这听起来很愚蠢,但是 Mongoose 使用复数形式的集合名称,所以
mongoose.model('User' ...
Run Code Online (Sandbox Code Playgroud)
保存到用户集合。我花了几个小时才刷新 mongoDB 客户端并意识到我的所有文档都在“用户”而不是“用户”中。
| 归档时间: |
|
| 查看次数: |
7781 次 |
| 最近记录: |