javascript - 在两个集合之间传递数据 - Meteor JS

标签 javascript mongodb meteor meteor-collection2 simple-schema

示例

我有两个集合,一个用于帖子,一个用于标签,如下所示:

Post {
   "_id": "WZTEGgknysdfXcQBi",
   "title": "ASD",
   "labels": {},
   "author": "TMviRL8otm3ZsddSt",
   "createdAt": "2016-01-14T08:42:42.343Z",
   "date": "2016-01-14T08:42:42.343Z"
}

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

我想要实现的是拥有多个标签的帖子。

问题是我无法将标签数据插入帖子中。 我有一个用于添加新帖子的模板,我在其中重复标签。然后在助手中,我检查选中了哪个标签并将其存储到一个数组中,但我无法将该数组插入到 Posts 集合中。

'submit .add-entry': function(event) {
    var title = event.target.title.value;
    var description = event.target.description.value;

    var checkedLabels = $('.label-checkbox:checked');

    //initiate empty array
    var labelsArray = [];

    //go over the checked labels
    for(i = 0; i < checkedLabels.length; i++){
        var label = checkedLabels[i].value;

        // store ids into array
        labelsArray.push(label)
    };

    Posts.insert({
        title: title,
        description: description,
        labels: labelsArray
    });

问题1:我应该插入所有标签数据还是仅根据该ID从标签集合中获取更多详细信息?

问题2:如何将标签数组插入到帖子中?上面的代码不起作用,因为它需要一个对象

Q3 在集合之间实现这种关系的最佳方式是什么?

最佳答案

(Q1)您可以将所有标签 ID 插入到该 labels 列表中并保持更新(Q3)我认为这是一个很好的做法;在您的开发过程中尝试使用此包的复合集合进行发布:https://github.com/englue/meteor-publish-composite

(Q2) 插入很容易:

Post.insert({title:'Abc', labels:['one', 'two']});

您需要使用 $addToSet 进行更新。下面是一个可能的方法的示例:

let setModifier = {
  $addToSet: {
    labels: myArrayOfLabelIDs
  }
};
return Post.update({
  _id: id
}, setModifier);

注意:切勿在客户端上使用插入(就像您所做的那样)。我的示例可以作为服务器上的方法添加(在其中使用 check()),并且可以在提交时从客户端调用,如下所示:

Meteor.call('myMethod', id, labelsArray)

关于javascript - 在两个集合之间传递数据 - Meteor JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34785473/

相关文章:

javascript - 为什么这在我的第三个 if 语句中给我一个 0?

Javascript 如何使用带括号的和/或运算符

javascript - 如何通过纯 NodeJS 从 MongoDB 读取数据?

javascript - 如何在 meteor.js 网站中使用 youtube 数据 API v3.0?

javascript - 使用 e.keyCode || e.哪个;如何判断小写和大写的区别?

javascript - 单击 HTML 按钮更改 CSS?

node.js - 错误请求中的身份验证失败 : Missing Credentials

mongodb - 计算 MongoDB 中的唯一值

node.js - 使用 Node ddp-client 从 Node 插入 meteor 集合

javascript - 如何使用 meteor 模板中的语句