我在客户端订阅了一个服务器端集合。客户端无权访问服务器端集合。

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

有可能吗?

谢谢您的回答。

最佳答案

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

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

07-24 19:37