Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在同一模板上显示项目总数和项目限制列表_Javascript_Meteor_Publish Subscribe_Meteor Helper - Fatal编程技术网

Javascript 如何在同一模板上显示项目总数和项目限制列表

Javascript 如何在同一模板上显示项目总数和项目限制列表,javascript,meteor,publish-subscribe,meteor-helper,Javascript,Meteor,Publish Subscribe,Meteor Helper,我的页面上有两个部分 第一部分有一个有限的项目列表。第二部分是项目总数(recordsCount) 当服务器添加新项目时,我看到项目列表已更新,但总计数有一个旧值 Tracks = new Mongo.Collection('tracks') 客户: Meteor.subscribe('tracks') Meteor.call('records', function(err, data) { Session.set('_records', data) }) Template.tra

我的页面上有两个部分

第一部分有一个有限的项目列表。第二部分是项目总数(recordsCount)

当服务器添加新项目时,我看到项目列表已更新,但总计数有一个旧值

Tracks = new Mongo.Collection('tracks')
客户:

Meteor.subscribe('tracks')

Meteor.call('records', function(err, data) {
    Session.set('_records', data)
})

Template.tracks.helpers({
    tracks: function() {
        return Tracks.find()
    },
    recordsCount: function() {
        return Session.get('_records')
    }
})
服务器:

Meteor.publish('tracks', function() {
    return Tracks.find({}, {limit: 100})
})

Meteor.methods({
    records: function() {
        return Tracks.find({}).count()
    }
})

var CronManager = new Cron(10000)
CronManager.addJob(1, function() {
    Tracks.insert({filed1: 'test'})
})

如果你只是想有效地将计数带入你的应用程序,请查看软件包

nonReactive
选项仅在需要时发送计数。如果你真的不需要实时计数,这会很有用,因为大多数应用程序每隔几秒钟就能更新一次。这将节省大量的CPU

Template.tracks.helpers({
  tracks: function() {
    return Counts.get('posts-count')
  }
});

阿鲁诺达关于这一点的优秀章节的提示。

我已经研究了publish counts软件包的解决方案。就我而言,这是一个非常沉重的包裹。它一直在加载CPU。我已将服务器端代码替换为使用带有计数字段的集合

常见的:

Counter = new Mongo.Collection('count')
服务器: Meteor.Publish('count',function(){ 返回计数器find() })


请参阅签出该包。@Dan Dascalescu,谢谢,它对我有用。谢谢,我已将服务器计数器代码包装在Meteor.defer中,与Meteor.defer一样(函数(){Counts.publish(此为“计数器记录”,Tracks.find())}.bind(此)),但我认为避免发布计数包是个好主意。
Counter = new Mongo.Collection('count')
if(Counter.find().count() === 0) Counter.insert({count: Tracks.find().count()})
var CronManager = new Cron(10000)
CronManager.addJob(1, function() {
    Counter.update({}, {$inc: {count: 1}})
    Tracks.insert({filed1: 'test'})
})