javascript - Meteor Mongodb 查询不会更新且没有错误消息

标签 javascript meteor

我已经被这个 Meteor 问题困扰了一段时间了。我正在尝试更新 mongodb 文档中的嵌套数组。但它似乎根本没有更新文档。此外,没有发出任何让我感到困惑的错误消息。

Document structure:
     |----_id
     |----name
     |----members (Array)
          |---- [0]
               |----history (Array)
                     |----[0]={type:2,startdate:010304,enddate:120314}
                     |----[1]={type:1,startdate:140904,enddate:150914}
                     |----[2]={type:3,startdate:241204,enddate:291214}
                     |----!!!!!I WANNA ADD THE ENTRY HERE !!!!!!!!!!
               |----state
          |---- [1]
               |----history (Array)
                     |----[0]={type:2,startdate:010304,enddate:120314}
               |----State

这是代码

hisobj = {'type':type, 'startdate':startdate,'enddate':enddate};

parstr = "members["+insertmemberid+"].history";

Groups.update({"_id":Session.get("groupid")},{$addToSet:{parstr:{$each: [hisobj]} } });

如有任何建议,我们将不胜感激。

最佳答案

update 函数中,parstr 是一个 JavaScript 标识符。它被用作属性名称而不被解析。它与使用字符串“parstr”具有相同的效果。要将变量的值用作属性名称,必须使用数组表示法。因此,创建一个用作 addToSet 操作的值的对象,并使用 parstr 的值设置一个属性。

hisobj = {'type':type, 'startdate':startdate,'enddate':enddate};

parstr = "members." + insertmemberid + ".history";

// create an object to be used as the value of the addToSet operation
var addToSetValue = {};
// the value stored in parstr will be used here
addToSetValue[parstr] = hisobj;

Groups.update({"_id":Session.get("groupid")}, {$addToSet: addToSetValue}}, function (error) {
  if (error) {
    console.log(error);
  }
});

请注意,在 parstr 中,您需要使用点表示法,正如 Hubert OG 所说。那是不同的情况。我们只是创建 mongodb 将在内部使用的字符串来发挥它的魔力。

此外,作为更新调用的最后一个参数的回调将使您看到可能的错误。

关于javascript - Meteor Mongodb 查询不会更新且没有错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25469242/

相关文章:

javascript - 引用错误: Template is not defined in Meteor

javascript - 我需要做什么才能使用 Meteor 加载引导示例

javascript - 在嵌套数组中按键查找

javascript - 表单数据未填充

javascript - CSS3 悬停在图标元素上

javascript - Meteor.loginWithPassword 导致页面刷新

javascript - 清除所有输入文本元素并将焦点移至第一个

javascript - 使用JS从JSON文件中读取并计算数据

javascript - URL 的 <input> 标签验证

Meteor 1.3 和 Angular 1