sergo_serga
@sergo_serga

Как отредактировать и вывести коллекцию?

Пишу сайт на Meteor.js, возникла проблема. Нужно взять данные из коллекции, отредактировать их и вывести на странице. Коллекция вида:
{ 
    "_id": "WEqesdweWEWAEe", 
    number: 1, 
    other: { 
        '514': { 
            test: 1, 
            test2: 2
        }
    }
}

Я получаю эти данные и редактирую их:
Template.test.helpers({
tests: function() {
      testres = [];
      test = Test.find({number: 1});
      test.forEach(function(doc){
        for(i in doc.other) {
          testres[i] = {
            name: doc.other[i].test,
            lastname: doc.other[i].test2,
            number: doc.number
          };
        }
      });
    return testres;
}
});

Потом я хочу их вывести
{{#each tests}}
    {{number}}
    {{name}}
    {{lastname}}
{{/each}}

Но ничего не выводит, как правильно сделать?
  • Вопрос задан
  • 215 просмотров
Решения вопроса 1
@iShatokhin
JS developer
Обращение к mongo асинхронное. Вот функция получения данных, но из нее не получится синхронный хелпер для рендера. Сначала получите данные, потом рендерьте их.

function getTesters (cb) {
  var testres = [];
  Test.find({number: 1}).toArray(function (err, test) {
    test.forEach(function(doc){
      for(var i in doc.other) { // "for in" очень плохое решение в плане скорости, я бы заменил на var keys = Object.keys(doc.other); for(var i = 0; i < keys.length; i++) { testres[keys[i]] = /* код*/ }
        testres[i] = {
          name: doc.other[i].test,
          lastname: doc.other[i].test2,
          number: doc.number
        };
        cb(err, testres);
      }
    });
  });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы