【问题标题】:Extend a meteor collection server and client side扩展流星收集服务器和客户端
【发布时间】:2014-09-13 18:01:50
【问题描述】:

我目前正在使用令人惊叹的 Meteor 平台开发应用程序。我想对我的收藏做点什么,但从目前看到的例子中我真的找不到如何去做。

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

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

{ name: "My countdown"}

1) 我想通过添加计算属性“startTime”来“扩展”文档服务器端。文档可能如下所示:

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

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

2) 我想通过添加本地属性“currentTime”来“扩展”文档客户端,我将使用 setInterval 进行更新。文档可能如下所示:

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

也许在那里使用转换,但我还是不知道如何扩展现有文档。

3) 我希望这 2 个新属性是响应式的,因此如果它们发生更改,则会触发 UI 中的一些更新。

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

非常感谢您的帮助!!

【问题讨论】:

    标签: meteor


    【解决方案1】:

    您可以更新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 调用。这是功能性的,但不安全。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2015-08-07
      • 2018-06-17
      • 2015-02-06
      • 2015-03-27
      • 1970-01-01
      相关资源
      最近更新 更多