javascript - 通过 id 匹配集合项

标签 javascript mongodb meteor

两个 mongo 集合之间的关系。

我有 2 个集合:条目和标签:

// example Entry
{
  "_id": "4ZCBv5ogLStfFxpvp",
  "title": "Some other title",
  "entryLabels": [
    "TFrYvEujpqbMryWEZ",
    "rn8Z57NsEYse7nYTo",
    "rn8Z57NsEYse73YTo"
  ],
  "author": "TMviRL8otm3ZsddSt",
  "createdAt": "2016-01-16T15:21:43.153Z",
  "date": "2016-01-16T15:21:43.153Z"
}

// Example Label
{
  "_id": "9NCNPGH8F5MWNzjkA",
  "color": "#333",
  "name": "Grey Label",
  "author": "TMviRL8otm3ZsddSt"
}

由于一个条目可能有多个标签,因此我将标签 ID 保留在该 entryLabels 字段中。 我的计划是只保存标签 ID,然后根据它查询 Labels 集合。

如果我只有一个 labelID 就没问题,因为我可以根据该 ID 查询 Labels 集合并返回一个标签。但是我有一个 ID 数组,我必须返回多个标签。

我的尝试是这样的(在模板助手中):

labels: function(event){
    var entryLabels = this.entryLabels;

    var arr = []
    for(i = 0; i < entryLabels.length; i++) {
        var label = entryLabels[i];
        var theLabel = Labels.find({_id: entryLabels[i]}).fetch();

        arr.push(theLabel);
    }

    return arr;
}

然后,在模板中:

{{#each labels}}
    {{name}}
    <p>asd</p>
{{/each}}

这会返回“asd”3 次,但我无法访问名称等标签属性

所以,我想我的问题是,如何访问这些属性。 另外..我这样做的方式正确吗?

最佳答案

am I doing this the right way?

我会说不。与几乎任何其他数据库一样,使用 mongo,您可以一次检索多个文档。为什么可以在 for-loop 中一次获取一个

labels: function(event){
    var entryLabels = this.entryLabels;
    var arr = Labels.find({_id: {$in: entryLabels}}).fetch();
    return arr;
}

这也将解决您的“我无法访问名称等标签属性”的问题,因为您的旧 arrarrayarray 文档,而不是您预期的文档数组。

关于javascript - 通过 id 匹配集合项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829859/

相关文章:

ruby-on-rails - mongodb数据设计问题

javascript - 仅当特定 session / session 不为 false 时, meteor 才允许 Collection.insert

javascript - 如何使用meteor.js监控浏览器中的数据传输?

javascript - 将 PHP 文件内容导入 Javascript 变量

javascript - 如何使用 Ajax 将复选框信息添加到 MySQL 数据库?

php - jQuery 或 Javascript 解决方案删除特定标签但保留其余部分

python - 通过 httpd 上的 Flask-PyMongo 连接到 MongoHQ URI 时出现 ConnectionFailure

java - Mongodb更改文档字段名称

node.js - Meteor 如何接收对 MongoDB 查询结果的更新?

javascript - 如何向 roundSlider 添加一些文本标签