2015-04-28 3 views
0

Попробуйте использовать коллекцию Mongodb с массивом. Хотите использовать массив в шаблоне.Метеор как использовать массив из коллекции mongodb

Index.html 

<body> 
{{>test}} 
</body> 
<template name="test"> 
{{ #each task}} 
<p>{{this}}</p> 
{{/each}} 
</template> 

The app.js 

Task= new Mongo.Collection("Tasks"); 

if (Meteor.isClient) { 
    // This code only runs on the client 
    Template.test.helpers({ 
    task: function() { 
     return Tasks.find({"cat":"TASK"}, {"_id":0, "ALL_TASKS":1}); 
    } 
    }); 
} 

if (Meteor.isServer){ 

    if (Task.find({}).count() === 0){ 
     Task.insert({"cat":"TASK", "ALL_TASKS":["t1","t2"]}) 
    } 

} 

Это не работает. Что мне не хватает

ответ

0

Вы должны использовать еще один {{#each}}. Используемый вами {{#each}} возвращает объект коллекции, а не фактический требуемый массив. Попробуйте это:

<template name="test"> 
    {{#each task}} 
     {{#each this.ALL_TASKS}} 
     <p>{{this}}</p> 
     {{/each 
    {{/each}} 
</template> 

Обратите внимание, что this.ALL_TASKS теперь циклически массива внутри объекта коллекции.

Ваш помощник будет выглядеть следующим образом:

if (Meteor.isClient) { 
// This code only runs on the client 
    Template.test.helpers({ 
    task: function() { 
    return Tasks.find({"cat":"TASK"}); 
    } 
}); 
} 
+0

Спасибо, что работает. –

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