使用Meteor,我想知道如何最好地处理共享同一服务器端数据库集合的不同客户端集合.考虑下面的例子:我有一个User
的集合,在我的客户端,我有一个list of users that are friends,我有一个搜索功能,它对整个用户数据库执行查询,返回一个list of usernames that match the query.
在Publish服务器端方法中,我对同一个集合进行了两次查询,返回了不同的文档集.这些数据应该进入客户端的两个独立集合吗?或者,匹配两个查询的所有用户文档最终是否都应该在同一个集合中?如果是后者,我会复制用于服务器端和客户端查询的代码吗?
在服务器上:
Meteor.publish('searchResults', function(query){
var re = new RegExp(query, 'i')
return Users.find({ 'name' : {$regex: re}})
})
在客户机上:
Session.set('searchQuery', null)
Meteor.autosubscribe(function(){
Meteor.subscribe('searchResults', Session.get('searchQuery'))
})
Template.search.events = {
'keyup #user-search' : function(e){
Session.set('searchQuery', e.target.value)
}
}
_.extend(Template.search, {
searchResults: function() {
var re = new RegExp(Session.get('searchQuery'), 'i')
return Users.find({ 'name' : {$regex: re}})
}
})
这似乎是一个合理的解决方案,但不是最佳方案.如果我想创建一个新的客户端集合,其中包含来自多个服务器端集合的搜索结果,该怎么办?