我有一个返回游标,看起来像这样的发布:流星观察者重用:将更改我的发布返回查询不使用this.userId使我的观察者更可重用?
// Publication RETURNS THIS QUERY
Notepads.find({_id: notepadId, $or: [{userId: this.userId}, {'collaborators.userId': this.userId}], archived: false})
正如你所看到的查询是用户唯一的,因为它包括this.userId
我用this.userId
在出版物作为一种形式的安全。如果您与该特定记事本关联,则只会返回数据。
在我的应用程序,可以有多人一个记事本合作。所以为了让观察者更加可重用,这个调整会对我的应用程序有所帮助吗?
// Optimized publication
notepad = Notepads.findOne({_id: notepadId, $or: [{userId: @userId}, {'collaborators.userId': @userId}], archived: false})
if notepad?
// Optimized publication RETURNS THIS QUERY
return Notepads.find({_id: notepad._id, archived: false})
else
return
我认为这是观察者重用的手段。该发布返回与订阅该订阅的任何用户完全相同的查询。那么这是否正确,这个优化是否值得改变?
嗨。我很困惑。你可以再看一下我所做的优化查询。我的确如你所说。如果第一次找到记事本,那么我返回光标'return Notepads.find({_ id:notepad._id,archived:false})'这是我对 – nearpoint
的更改,感谢您的详细解答!这是好东西。但我想澄清一点。如果许多用户在单个记事本(同一个notepad._id)上进行协作,那么这会不会改变呢?就反应性而言,代码的设置使得用户只有在他们是合作者时才会订阅。如果他们作为合作者被移除,而他们在记事本中,它仍然会同步记事本,并且在客户端上,我可以观看记事本并停止订阅,如果他们不再合作。因此,考虑到这些情况,现在值得改变吗? – nearpoint
如果说典型的记事本协作介于5个用户之间,那么我认为这是值得的优化吗? 10位用户? 40用户?我想我宁愿不做优化,如果它几乎没有任何区别,我会放松反应 – nearpoint