Meteor:计算关系集合中的集合项数

时间:2016-09-14 12:20:36

标签: javascript mongodb session meteor collections

我正在做一个列表/任务应用程序,我可以选择使用会话向我显示好任务的列表来存储我点击的列表。 使用Meteor任务板教程,我可以计算我的项目。 问题是计数系统与所有列表无关,而只与列表有关。

我无法理解如何计算每个列表的项目,并在每个列表项目前面显示计数器。 在教程中,计数器在Session中,所以我是否必须在集合中创建一个新的“计数器”,或者我可以保持会话吗?

一些代码: List.js

if (Meteor.isServer) {
    Meteor.publish('lists', function listsPublication() {
        return Lists.find({
            $or: [
               {private: { $ne: true}},
                {owner: this.userId},
            ],
        });
    });
}

Meteor.methods({

Template.list.helpers({
    incompleteCount() {
        return Tasks.find({ listId: Session.get('listId'), checked: { $ne: true } }).count();
    },

Template.list.events({
    'click .list-selected' (event) {
        event.preventDefault();

        var list = $(event.currentTarget).attr('list-id');
        Session.set('listId', list);
    },

Body.js

Template.body.helpers({
    tasks() {
        const instance = Template.instance();

        if (instance.state.get('hideCompleted')) {
            return Tasks.find({
                listId: Session.get('listId'),
                checked: { $ne: true },
            }, { sort: Session.get("sort_order") });
        }
        return Tasks.find({listId: Session.get('listId')}, { sort:      Session.get("sort_order")});
     },

     lists() {
         return Lists.find({}, { sort: { createdAt: -1 } });
     },

});

提前致谢

1 个答案:

答案 0 :(得分:0)

感谢@CodeChimp,我可以找到在我的助手中使用param的方式:

    incompleteCount(listId) {
        return Tasks.find({ listId: listId, checked: { $ne: true } }).count();
    },

模板(使用玉石):

   .ui.teal.left.pointing.label
        span {{incompleteCount this._id}}

使用我之前在一个列表中执行的搜索,但我刚刚添加了param而不是只获取活动列表的session.get()...

由于