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')
。集合不知道它自己的模式——这取决于要强制执行的允许/拒绝或方法。我建议大家仔细看一下,看看这些东西在起作用。