在我的订阅功能中,我传递了一个会话变量(categoryArray),它也是一个发布功能的数组,如下面的代码所示:
Router.route('/MerchantLandingPage', {
subscriptions: function(){
var categoryArray = Session.get('category');
return Meteor.subscribe('MerchantTrending', categoryArray)
}
});
在发布功能中,为了确保收到,我console.log
categoryArray
。这在终端中体现得很漂亮:
在下面找到相应的代码:
Meteor.publish('MerchantTrending', function (categoryArray){
var currentUser = this.userId;
console.log ("Printing out Arrary>> " + categoryArray)
return buyList.find({ who:"Merchant", itemCategory: { $in: [ categoryArray ] } }, {ownerId:currentUser }, {skip: 0, limit: 3});
});
我的问题是return buyList.find({ who:"Merchant", itemCategory: { $in: [ categoryArray ] } }, {ownerId:currentUser }, {skip: 0, limit: 3});
没有回复任何东西。不$in
在发布功能中不起作用吗?或者我错误地使用$in
?
请帮忙!
答案 0 :(得分:1)
您的出版物问题似乎与您的查询有关。
您将ownerId: currentUser
包裹在花括号{}
将您的数据库查询更改为以下内容:
buyList.find(
{ who:"Merchant", ownerId: currentUser, itemCategory: { $in: [ categoryArray ] } },
{skip: 0, limit: 3}
);
如果需要,您也可以只将this.userId
插入查询并删除变量
buyList.find(
{ who:"Merchant", ownerId: this.userId, itemCategory: { $in: [ categoryArray ] } },
{skip: 0, limit: 3}
);
另外,你为什么要使用skip: 0
?我想你可以删除它
答案 1 :(得分:0)
@Sean感谢指出花括号。但是删除它们并没有解决手头的问题。我通过删除包含数组的[]和代码解决了这个问题。现在代码运行完美。
我的代码目前看起来像这样:
buyList.find(
{ who:"Merchant", ownerId: currentUser, itemCategory: { $in: categoryArray } },
{skip: 0, limit: 3}
);
注意代码中省略的[]。
无论如何,谢谢你。