【问题标题】:Meteor: Count the number of collection item in relational collectionMeteor:统计关系集合中集合项的个数
【发布时间】:2017-01-22 06:04:46
【问题描述】:

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

我不明白如何计算每个列表的项目,并在每个列表项目的前面显示计数器。 在教程中,计数器在会话中,所以我必须在集合中创建一个新的“计数器”,还是我可以保留会话?

一些代码: 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);
    },

正文.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 } });
     },

});

提前致谢

【问题讨论】:

  • 听起来您需要订阅所有列表,然后在客户端上进行过滤以获取计数。另一种方法是通过聚合或自定义发布来聚合数据,或者只是将最终计数写入单独的聚合集合。
  • 嘿,我刚刚编辑了帖子,因为我认为我订阅了所有列表。我不明白如何在客户端上进行过滤这是我正在尝试由助手做的事情..
  • 与其拥有一个返回所有列表的帮助器,不如拥有一个帮助器,您可以传入您想要的列表并仅返回该列表。我什至会嵌套我的模板,所以我有一个处理显示单个列表的模板。那是(或者是,除非它被改变)使用 Blaze 的首选方式...为您的组件创建逻辑嵌套模板。这样,反应性就被降级为可能的最小组件。

标签: javascript mongodb session meteor collections


【解决方案1】:

感谢@CodeChimp,我可以在助手中使用参数找到方法:

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

以及模板(使用jade):

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

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

谢谢

【讨论】:

    猜你喜欢
    • 2015-10-30
    • 2012-06-24
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    相关资源
    最近更新 更多