作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在服务器端使用响应式(Reactive)计数器变量。但我无法猜测在不使用集合的情况下如何做到这一点。我预计 {{count}} 将在服务器计数变量更改后更新,而无需刷新页面,或者如何向客户端发送计数已更改的信息?
<body>
{{> test }}
</body>
<template name="test">
{{count}}
</template>
客户:
Meteor.call('count', function(err, result) {
console.log(result)
Session.set('count', result)
})
Template.test.helpers({
count: function () {
return Session.get('count')
}
});
服务器:
var count=0
Meteor.startup(function () {
Meteor.setInterval(function() {
count++
}, 1000)
});
Meteor.methods({
count: function() {
return count
}
})
我的代码 MeteorPad
我想看看我的期望:
客户:
Meteor.subscribe('count')
Template.test.helpers({
count: function () {
return Counter.findOne().count
}
});
常见:
Counter = new Mongo.Collection('count')
服务器:
Meteor.publish('count', function() {
return Counter.find()
})
Meteor.startup(function () {
if(Counter.find().count() === 0) {
Counter.insert({count: 0})
}
Meteor.setInterval(function() {
Counter.update({}, {$inc: {count: 1}})
}, 1000)
});
meteorpad 上的示例
最佳答案
这取决于您计划如何扩展应用程序。如果您计划扩展到多个服务器实例,那么您不能依赖服务器自动共享信息。在这种情况下,最好创建一个名为“ApplicationState”之类的集合。然后,应用程序的每个实例都可以使用一致的状态,并且您可以利用内置的订阅。
如果您计划仅使用单个服务器实例,那么您应该查看 Tracker 上的文档:http://manual.meteor.com/#tracker 。这允许您定义对数据的自定义依赖关系。我还没有机会使用它,但我很确定您可以创建类似于订阅的东西:http://manual.meteor.com/#deps-creatingreactivevalues
关于meteor - 如何在服务器端使用响应式(Reactive)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27228496/
我是一名优秀的程序员,十分优秀!