mongoose findOne()调用未保存,输出中没有错误
mongoose findOne() call not saving and no error in output
我正在做一个简单的findOne()并将文档保存在其中,但由于某些原因,它不起作用。我已经输出了对象,控制台中的输出是正确的,但在save()之后,我查看了我的mongodb,它没有保存。我不确定我是否应该设置某种选项。这是我的代码:
var1 = "data1";
var2 = "data1field1";
Model.findOne({'_id':some_id}).exec(function(err, doc) {
if (err) return console.error(err);
(doc.data[var1][var2][0] += 1;
console.log(doc.data.data1);
doc.save(function (err) {
if(err){console.log(err);}
console.log('success');
});
});
这是我的模式:
var modelSchema = new mongoose.Schema({
'data':{
'data1':{
'data1field1':[{type: Number}],
'data1field2':[{type: Number}]
},
'data2':{
'data2field1':[{type: Number}],
'data2field2':[{type: Number}]
}
}
});
var Model = mongoose.model('model', modelSchema);
module.exports.Model = Model;
假设我创建了这个模式的一个实例,其中data.data1.data1field1是两个数字[0,0]的数组,"console.log(doc.data.data1);"的输出为:
{
data1field1:[1,0],
data1field2:[0,0] }
success
但拯救并没有发生。我是mongoose/mongodb的新手,所以我可能缺少一个简单的基本东西。
注意:我不能使用Model.update({},{$inc{}}}),因为我使用变量来选择要更改的数据对象,并且由于.update中的文字,这是不可能的。
谢谢。
因此,当您执行类似myModel.name = 'Steve'
的简单属性集时,mongoose有一些智能可以自动检测更改。但是,当您访问深度嵌套的模式并在图的深处更改属性时,顶级文档无法自动检测到这一点。所以你需要告诉猫鼬你改变了什么。
doc.markModified('data.' + var1 + '.' + var2);
如果你得到了正确的咒语,猫鼬将能够保存你的零钱。
相关文章:
- 回复'js'仅当请求有错误时(否则使用html)
- 表单已发送,但验证有错误
- 如果文件不存在,fs.watch是否有错误处理程序
- Meteor上有错误的同步问题
- 表单验证:如果有错误,不要't使手风琴动起来
- 什么'这个Javascript函数的输出有问题
- 我有错误文档.注册元素未被细化
- 如何转换为特定于 json 的类 c#?我有错误
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- 脸书应用程序有错误
- 为什么 AJAX 输出带有错误的编码
- XDomainRequest 总是有错误
- HTML5 Canvas游戏有错误,点击时第一个拼图块会变成不同的块
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 量角器由中继器命令中是否有错误
- Jquery 验证器 - 表单被保存但有错误
- 断言错误 - 输出有噪音.如何仅显示断言
- 任何人看到我的重置功能有错误
- 现在我有错误“;ReferenceError:项未定义“;不知道如何测试我的dataService