Метеор, как добавить findParams в коллекцию find? - PullRequest
0 голосов
/ 10 мая 2019

Я работаю над тем, чтобы показывать сообщения всех пользователей на главной странице, и все работает нормально. Я добавил маленькие кнопки с сообщениями так что пользователь может заблокировать сообщение, если он хочет, и заблокировать пользователя, который добавил это сообщение и сохранил эти значения в коллекции пользователей. Все посты идут на главной странице, но после блокировки аргумента или пользователей я не хочу показывать этот конкретный пост или пост пользователя. Это мой код для отображения всех сообщений, и я пытаюсь добавить условие во все сообщения, чтобы не показывать блокированные сообщения и блокировать сообщения пользователей. Это мой помощник

'posts'() {
      const findParams = {};
    findParams.$or = [{ 'block': { $exists: false } }, { 'block': false }];
    if(Meteor.user()){
      let blockPost = Meteor.user().blockPostList;
      let blockUser = Meteor.user().blockOwneUserList;
      if(blockPost && blockPost.length > 0){
        findParams._id = { $nin: blockPost };
      }
      if(blockUser && blockUser.length > 0){
        findParams.$and = [{'plaintiff._id': {$nin: blockUser}},{'defendant._id': {$nin: blockUser}}];
      }
    }

    return Posts.find({}); 

},

1 Ответ

0 голосов
/ 10 мая 2019

Вы все равно всегда возвращаете все документы, потому что

return Posts.find({});

возвращает все, что в данный момент находится в Коллекции. Скорее должно быть

return Posts.find(findParams);

В противном случае весь код для сборки findParams не имеет смысла. Обратите внимание, что не все операции монго работают с Minimongo (клиентом Meteor Mongo), но вы должны быть в порядке с теми, что в вашем коде.

...