我有这段代码
{
"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"
}
}
我尝试向邮递员发送请求,我确实收到了用户对象的回复,这意味着保存功能中没有错误
monthLength
但是我的数据库中没有这个条目。我用Robomongo检查了我的数据库,我确信没有数据。我错过了什么?
答案 0 :(得分:7)
保存集合时无法处理错误,请将user.save
函数替换为
user.save(function(err){
if(err){
console.log(err);
return;
}
res.json({ token: generateToken(user), user: user });
});
通过这种方式,您将能够跟踪数据是否被保存以及相关错误可能是什么。
答案 1 :(得分:2)
这与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
查看Mongoose docs here的“混合”部分
答案 2 :(得分:0)
我认为这是个问题只需尝试这个,更改用户对象的变量名称
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.' }]);
}
newUser = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password,
mobile: req.body.mobile
});
newUser.save(function(err,saveUser) {
res.json({ token: generateToken(saveUser), user: saveUser });
});
});
答案 3 :(得分:0)
对于遇到此问题的其他人,您的模型isArchived
SchemaType必须是Product(Sku sku, string name, string description, bool isArchived)
类型。
假设我们将模式和模型定义为:
_id
我们希望使用ObjectId
1234更新用户名:
var userSchema = new mongoose.Schema({
_id: mongoose.Schema.ObjectId,
userID: Number,
name: String
});
var Users = mongoose.model('collectionName', userSchema);
Mongoose将通过执行以下操作成功更新它:
userID
如果我们在Users.findOne({userID: 1234}, function(err, user) {
user.name = "Jane Doe";
user.save(function(err) {
// ...
}
}
中将users.update({ _id: ObjectId("anObjectID") }, { '$set': { name: 'Jane Doe' } })
的SchemaType设置为_id
,那么它就会这样做:
String
答案 4 :(得分:0)
我知道这听起来很愚蠢,但是猫鼬使用集合名称为复数形式,所以
mongoose.model('User' ...
保存到用户集合。在我刷新mongoDB客户端之前,我迷失了几个小时,才意识到我所有的文档都在“用户”而不是“用户”中。
答案 5 :(得分:0)
使用错误功能可以帮助我!
await user.save(function(err){
if(err){
console.log(err);
return;
}});