2015-04-19 1 views
0

У меня есть коллекция, в которой хранится список пользователей, за которыми следуют пользователи, и каждый пользователь имеет для этого свой документ. Она построена так:В Meteor, получайте данные из коллекции, а затем зацикливая на другом

{"_id": "12365", 
"user": "123548" //user ID 
"posts" : [ 
    {"postId": "225"}, 
    {"postId": "688"}, 
    {"postId": "55"}, 
    (...) 
]} 

user ключ относится к _id этого пользователя, созданного с помощью account пакета.

Я пытаюсь, пока на странице профиля пользователя, перечислить все сообщения, которые следуют за пользователем, но я не могу, по каждому postId, показать, что postTitle вместо его идентификатора.

HTML, чтобы сделать список, как это:

<p class="title"><a href="#">{{postId}}</a></p> 

И помощник шаблон, получаем, что пользователя последовали сообщения, как это:

Template.singleUser.helpers({ 
    postsLibrary: function() { 
     var postsLibraryContent = postsLibrary.find({ 
      user: Meteor.user(); 
     }); 
    }, 
}); 

Как я могу цикл в posts массиве из коллекции последующих должностей, но покажите каждый из сообщений title, которые относятся к каждому postId? Должен ли я делать это внутри этого помощника выше?

- обновление -

Название хранится на коллекции сообщений, например:

{ 
    "_id": "9845", //same as postId from the other collection 
    "title": "Lorem Ipsum", 
    "author": "Peter Parker", 
    (...) 
} 

ответ

0

Хорошо, получилось!

Template.singleUser.helpers({ 
    postsLibrary: function() { 
    var data = []; 

    //first we find all this current user postLibrary collection 
    var postsLibraryContent = PostsLibrary.find({ 
     user: this._id 
    }).posts; 

    //then for each item on `posts` array: 
    for (var i = 0; i < postsLibraryContent.length; i++) { 

     //get that array item postId value and store on a var 
     var postId = postsLibraryContent[i].postId; 

     //creates an array with the post data by searching for its _id 
     postData = Posts.find({ 
      _id: postId 
     }).fetch();    

     //and then push those data to an array above created 
     data.push({ 
      postTitle: postData[0].title, 
      postAuthor: postData[0].author 
     }) 

    }; 

    //then return data array 
    return data; 

    } 
}); 

И чтобы сделать его на HTML:

{{#each postsLibrary}} 
    <li> 
     <p class="title"><a href="">{{postTitle}} - {{postAuthor}}</a></p> 
    </li> 
{{/each}} 
+0

Несмотря на то, что мой ответ работает, вероятно, стоит взглянуть на эту тему здесь для лучшего подхода: http://stackoverflow.com/questions/19913474/how-to-read-a-collection-that-depends-on один свой-в-метеор? RQ = 1 –

0

Изменить HTML от этого

<p class="title"><a href="#">{{postId}}</a></p>

Для этого

{{#each posts}} 
    <p class="title"><a href="#">{{postId}}</a></p> 
{{/each}} 

Это будет охватывать столбцы массива.

+0

Спасибо, @JoshOne, но это уже так. Проблема в том, что он возвращает 'postId' сам, а не заголовок сообщения. Вопрос состоял в том, как использовать этот 'postId' для получения заголовка сообщения и отображения там, где сегодня отображается' {{postId}} '. –

+0

Хорошо, я вижу. Обновите свой вопрос, чтобы показать, где хранится Заголовок. Единственная ссылка на заголовок, которую я вижу, - это класс заголовка. – JoshJoe

+0

Обновлено, @JoshOne, спасибо за помощь! –