2013-11-19 2 views
0
Values = new Meteor.Collection("values"); 

if (Meteor.isServer) { 
    Meteor.startup(function() { 
    Meteor.setInterval(function() { 
     Values.insert({id: Math.random(), name: "value"}); 
     console.log(Values.find({name: "value"}).id); 
    }, 1000); 
    }); 
} 

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

I2043-14:21:56.895(0)? undefined

ответ

1

find возвращает курсор, который является объектом, который содержит результаты вашего поиска (несколько как массив результатов). Это делается так, так как find может получить не только один результат, в зависимости от выбранного вами селектора.

У него есть forEach, похожий на JS, который принимает функцию и получает в качестве параметров документ, индекс и курсор.

Values.find({name: "value"}).forEach(function(doc,index,cursor){ 
    console.log(doc.id); 
}); 

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

[ 
    {id: SOME_RANDOM_NUMBER, name: "value"}, 
    {id: SOME_RANDOM_NUMBER, name: "value"}, 
    {id: SOME_RANDOM_NUMBER, name: "value"}, 
    {id: SOME_RANDOM_NUMBER, name: "value"}, 
] 
+0

Любая идея, как я могу получить длину коллекции, я. например, сколько элементов находится в коллекции? Я попробовал «Values.find» ({name: «value»}). Length', основанный на том, что вы говорите мне, что результат 'find' в моем случае есть, но я получаю' undefined'. –

+0

Я также пробовал 'Values.find(). Count()', но он возвращает 426 каждый раз: o –

+0

@ user996056 'Values.find ({}). Count()' для возврата длины коллекции. – Joseph

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