Javascript Meteor发布当前用户的数据

Javascript Meteor发布当前用户的数据,javascript,meteor,Javascript,Meteor,我只想发布登录用户创建的数据。我有以下发布功能: //server/collections/lists.js Meteor.publish('lists', function(){ if(this.userId){ return listCollection.find({createdBy: this.userId}); } else { this.ready(); } })

我只想发布登录用户创建的数据。我有以下
发布
功能:

    //server/collections/lists.js

    Meteor.publish('lists', function(){
        if(this.userId){
            return listCollection.find({createdBy: this.userId});
        } else {
            this.ready();
        }
    });

但是当我以登录用户的身份创建文档时,DOM上模板应该呈现的位置会随着我创建的文档“闪烁”,但随后它就会消失。我做错了什么?

这是一种症状,表现为试图在客户端上插入,但插入时没有插入,稍后服务器拒绝了插入。尝试在
服务器
目录下添加类似的内容:

listCollection.allow({
  insert: function (userId, doc) {
    // the user must be logged in, and the document must be owned by the user
    return (userId && doc.owner === userId);
  }
});
请注意,您需要为特定用例自定义规则(例如,您可能没有
所有者
字段)。例如,您可以只
返回userId
,以允许任何登录用户进行插入


或者,您不能设置
允许
,而是使用来执行插入。一般来说,这是我的建议-请参阅我的答案。

是由Meteor约定创建的
,还是必须在集合中定义该字段?我是从一个教程的片段中得到的,你可以随意称呼它。我认为
owner
更为常见,但这是一个品味问题。但要明确的是,我在我的
listCollection=new Meteor.Collection('listCollection')
定义中添加了
owner
字段,并让它
返回Meteor.userId()
?不,除非您使用包来管理您的模式。您的集合定义应该是
listCollection=newmeteor.collection('listCollection')
。集合不知道它自己的模式——这取决于要强制执行的允许/拒绝或方法。我建议大家仔细看一下,看看这些东西在起作用。