扩展流星收集服务器和客户端

时间:2014-07-22 18:55:23

标签: meteor

我目前正在使用令人惊叹的Meteor平台开发应用程序。我想对我的收藏品做点什么,但是从目前为止我看到的例子中我无法真正找到它。

基本上我想显示一个包含自己倒计时的项目列表。每个项目核心数据来自一个集合。每个倒计时开始时间必须在服务器端计算,不能保存在任何地方。每个倒计时都是客户端计算的,不会保存在任何地方。

我有一个名为“items”的集合来自我的MongoDb数据库。在我的集合中,文档的开头可能如下所示:

{ name: "My countdown"}

1)我想在文档服务器端“扩展”添加计算属性“startTime”。文件可能看起来像那样:

{ name: "My countdown", startTime: 40 }

我想我需要使用发布方法,但我真的不知道如何以这种方式扩展现有文档。

2)我想在文档客户端“扩展”添加本地属性“currentTime”,我将使用setInterval进行更新。文档可能看起来像那样:

{ name: "My countdown", startTime: 40, currentTime: 5 }

也许在那里使用转换,但我再也没有真正了解如何扩展现有文档。

3)我会喜欢2个新的属性被动反应,因此如果它们发生变化,会在UI中触发一些更新。

因此,如果我能得到任何起点和良好的实践,我们将非常感激:)

非常感谢你的帮助!!

1 个答案:

答案 0 :(得分:0)

您可以更新Collection的文档:最佳做法是在服务器上执行此操作。


client.js

Meteor.call('setStartTime',
            [your_document_id],
            [new_start_time],
    function(err, val) {
        if (err) {
            console.error(err);
        } else {
            // Successful.
    }
});


server.js

Meteor.methods({
    'setStartTime': function(itemId, newStartTime) {
        Items.update(itemId, {
            $set: { startTime: newStartTime }
        });
    }
});

这将设置或更新商品的startTime。 (请谨慎,因为任何有权访问您的JavaScript的人都可以在客户端看到您的setStartTime电话。这是有效的,但不安全。)

相关问题