2017-02-15 11 views
0

В моей Subscribe функции, я прохожу-на переменную сеанса (categoryArray), который также является массив функции Publish, как указано в приведенном ниже коде:

Router.route('/MerchantLandingPage', {  
subscriptions: function(){ 
    var categoryArray = Session.get('category'); 

    return Meteor.subscribe('MerchantTrending', categoryArray)  
    } 
}); 

В функции Publish, чтобы обеспечить получение , I console.logcategoryArray. Это отражает в терминале красиво: successful reflection that the array is read by the publishing function

Найдите ниже соответствующего кода:

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}); ничего не возвращает. Does not $in не работает в функции публикации? Или я как-то неправильно использую $in?

Просьба помочь!

+0

Вы пытаетесь запустить свой запрос в чем-то вроде robomongo? – perusopersonale

ответ

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? Думаю, вы можете удалить его

0

@Sean Спасибо, что указал на фигурные скобки. Однако удаление их не помогло решить проблему. Я решил проблему, удалив [], который завернул массив и код. Теперь код работает отлично.

Мой код в настоящее время выглядит следующим образом:

buyList.find(
{ who:"Merchant", ownerId: currentUser, itemCategory: { $in: categoryArray } }, 
{skip: 0, limit: 3} 
); 

Обратите внимание на опущено [] в коде.

В любом случае, спасибо.

 Смежные вопросы

  • Нет связанных вопросов^_^