在处理猫鼬时,我遇到了一些问题。
我写了以下代码片段:
if (!usr.settings) usr.settings = {};
async.forEach(Object.keys(params), function (item, nextitem){
usr.settings[item] = params[item];
nextitem();
}, function (err) {
if (err) return callback(err);
usr.save(function(err) {
if (err) return callback(err);
return callback();
});
});
当我第一次使用它时,它工作正常,它可以完美地创建文档中的所有项目,但是当我第二次使用它时(假设我想要更新这些项目)它不会改变它们的值也不会给我任何错误。 数据保持不变。
我试着调试它。
if (!usr.settings) usr.settings = {};
async.forEach(Object.keys(params), function (item, nextitem){
usr.settings[item] = params[item];
nextitem();
}, function (err) {
if (err) return callback(err);
usr.save(function(err) {
console.log(usr); <------------------- [At this point it shows the updated data but for some reason it doesnt save it to the db]
if (err) return callback(err);
return callback();
});
});
知道为什么会这样吗? 感谢。
答案 0 :(得分:0)
弄乱之后,找到了解决方案。
假设您使用以下架构:
user_schema = {
settings = Object
}
您将无法设置设置。因此,以下代码:
usr.settings.something = 123;
usr.save(function(err) {
if (err) return callback(err);
return callback();
});
什么都不做,仍然不会导致错误。 如果要解决此问题,请将此修复程序应用于架构:
user_schema = {
settings = {
something : Number
something_else: Object
}
}
现在您可以将something
设置为值:)
我希望它对某人有帮助