gpt4 book ai didi

meteor - 如何在服务器端使用响应式(Reactive)变量

转载 作者:行者123 更新时间:2023-12-02 04:42:21 24 4
gpt4 key购买 nike

我想在服务器端使用响应式(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com