【发布时间】:2015-09-08 20:36:27
【问题描述】:
我目前正在处理我的流星项目,但我不太了解流星解决我的问题的方法是什么。
我有一个最初在页面加载时调用的订阅。我订阅了以下不带任何参数的出版物:
Meteor.publish('testCollection', function(searchitem){
if(searchitem){
return testCollection.find({name:searchitem});
}
else{
return testCollection.find({},{
sort: { rating: -1 },
limit: 5,
fields: {
_id:1,
name:1,
description:1
}
});
}
});
这很好用,我从 else-case 中得到了结果。
但我希望用户能够在此集合中搜索名称。
所以我的刷新思路是在提交搜索按钮的时候使用:
Meteor.subscribe("testCollection","abc");
但这并没有刷新我的客户端 testCollection。 我怎样才能做到这一点?如果是,我是否必须取消订阅并重新订阅:如何?
【问题讨论】:
-
清理您的数据库输入!用户可以将 Mongo 选择器传递为
searchItem,使用check(searchItem, Match.OneOf(String, undefined))。 -
你能给我解释一下吗?我应该在我的代码中在哪里传递这个 Mongo 选择器,我应该在哪里调用检查函数?
-
check-function 是为了让发布者证明这个变量只是一个字符串或者未定义的,对吧?
-
是的。这样您就可以确定客户端发送的内容是您所期望的。
标签: javascript node.js mongodb meteor