【问题标题】:Meteor: Modify collection on client side onlyMeteor:仅在客户端修改集合
【发布时间】:2014-09-22 07:17:10
【问题描述】:

我有一个在客户端订阅的服务器端集合。客户端没有服务器端集合的写入权限。

我只想在客户端修改集合,并在我停止订阅/移动到另一条路线时销毁该更改。

这有可能吗?

感谢您的回答。

【问题讨论】:

  • 仅客户端收集怎么样? ClientCollection = new Meteor.Collection(null);

标签: javascript meteor


【解决方案1】:

我会在客户端上使用转换,如下所示:

var Books = new Meteor.Collection('books', {
    transform: function(doc){

        /*
            A doc looks like this:
            {
                _id: "...",
                title: "A nice title..."
            }
        */

        doc.clientTitle = new ReactiveVar("")

        doc.setClientTitle = function(title){
            this.clientTitle.set(title)
        }

        doc.getTitle = function(){
            var clientTitle = this.clientTitle.get()
            if(clientTitle == ""){
                return this.title
            }else{
                return clientTitle
            }
        }

    }
})

然后使用theBook.getTitle() 获取标题并使用theBook.setTitle('The new title') 仅在客户端上更新它。

注意:ReactiveVar 来自包reactive-var。

【讨论】:

  • 感谢您的回答。这可能会起作用,但会是很多代码,因为我的集合中有很多属性(我这样做)。有没有更优雅的方式。
猜你喜欢
  • 2013-05-27
  • 2016-04-15
  • 2018-02-03
  • 2012-04-23
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多