当前位置: 首页 > 面试题库 >

无法更新猫鼬模型

柴宏阔
2023-03-14
问题内容

我有一个让我感到困惑的奇怪问题。我有一个模型:

var Model = new Schema({
    name: String,
    variations: Array
});

变体条目如下所示:

[ {code: '', price: '' }, {code: '', price: '' }]

我需要添加一个新字段-说“颜色”。所以我这样做是为了批量更新:

Model.find().exec(function(err, products) {
    if (!err) {
        products.forEach(function(p) {
            for(var i = p.variations.length - 1; i >= 0; i--) {
                p.variations[i]['color'] = 'red';
                // This shows all existing variations 
                // with the new color feed - correct
                console.log(p.variations[i]);
            }
            p.save(function(err) {
                if (!err) {
                    console.log("Success");
                } else {
                    console.log(err);
                }
            });
        });     
    }
});

但是,“颜色”字段未设置-如果我再次浏览并注释掉该p.variations[i]['color'] = 'red';行,则它不会显示。我似乎无法弄清楚为什么要这样做。我有一个onSave事件,该事件已正确触发,因此可以保存。我也没有对版本结构进行任何检查-
即没有代码只允许代码和价格。我显然缺少了一些东西,但几个小时后我就没了主意。


问题答案:

当您修改无类型Array字段(如)的内容时variations,您需要通过调用markModified(path)已修改的文档来通知Mongoose您已更改其值,否则后续save()调用将无法保存它。参见docs。

  for(var i = p.variations.length - 1; i >=0; i--) {
    p.variations[i]['color'] = 'red';
  }
  p.markModified('variations');
  p.save(function(err) { ...


 类似资料:
  • 问题内容: 我已经查看了网站上的一些问题,但还没有弄清楚我在做什么错。我有一些这样的代码: 我不确定在中间应该做什么以使其正确更新数据库。我已经尝试了很多东西,但是无法撤消以找出所有我尝试过的东西。我一整夜都花了时间,我希望它能正常工作。 这几乎是我想要的,我想知道是否有任何方法可以在条件部分 我会继续玩弄它。 问题答案: 这正是我想要的,只有一行。:D完美!

  • 问题内容: 我有一个非常烦人的问题,我无法使用猫鼬更新任何内容。使用起来确实令人沮丧,并且文档根本​​没有帮助。 我有这个架构: 这是我要向阵列添加设备的代码: 在这一点上我得到错误: 我没有找到解释为什么发生这种情况的原因。我不得不提到该文档(数据库中几乎只有一个文档)是这个: 问题答案: 使用$ push或其他数组更新运算符将元素添加到数组。有关详细信息,请参阅http://docs.mong

  • 问题内容: 不确定我在做什么错,这是我的check.js 这是我的insert.js 每当我尝试运行check.js时,都会出现此错误 编译后无法覆盖“用户”模型 。 我知道此错误是由于架构不匹配引起的,但我看不到发生了什么?我对mongoose和nodeJS很陌生。 这是我从MongoDB的客户端界面中获得的信息: 问题答案: 发生错误是因为您已经定义了一个架构,然后又在定义该架构。通常,您应该

  • 问题内容: 我的文件 夹Folder 具有以下架构: 因此,对于每个页面,我可以拥有许多权限。在CMS中,有一个面板,其中列出了所有文件夹及其权限。管理员可以编辑一个权限并保存。 我可以很容易地用其权限数组保存整个 Folder 文档,其中只修改了一个权限。但是我不想保存所有文档(实际架构中包含更多字段),所以我这样做了: 但是问题是 烫发 总是 不确定的 !我试图以这种方式“静态地”获取许可:

  • 问题内容: 我有一个典型的架构和模型: 当我执行此更新时,它仅在定义回调时才有效,否则仅执行但数据库中的值未更改: 这有效: 这是一个错误吗?我没有在文档中看到是否需要回调,但是要求这样做很奇怪……我认为我在这里缺少了一些东西。 注意:我通过电子邮件匹配以测试建议,我在NodeJS v0.8.17中使用猫鼬v3.5.4,并具有简单的Express v3.0.6设置。 提前致谢。 问题答案: 用猫鼬

  • 问题内容: 在阅读教程时,通常会在模式和模型之间进行区分,特别是在处理mongoose / mongodb时。由于在该系统下似乎不存在“模型”,因此移植到Postgresql会有些混乱。两种方法有什么区别? 例如,此行的postgres / sql ORM等价于什么? (猫鼬和express.js): 问题答案: 在猫鼬中,模式表示特定文档的结构,可以是完整文档,也可以是文档的一部分。这是表达期望