2015-06-04 9 views
10

próbuję wrócić kolekcji za pomocą $ w i tablicę identyfikatorówMeteor znaleźć używając dolarów z tablicy identyfikatorów

Mam następujący ale to nie działa

var blockByLocation = Blocks.find({location: location}); 
    var producersArray = []; 
    blockByLocation.forEach(function (block) { 
     producersArray.push(block.producerId); 
    }); 

    console.log(producersArray); 

producersList = Producers.find({$and:[{organizationId: user.organizationId}, {_id:{$in: producersArray}}]}).map(function (obj) { 
      return {text: obj.name, id: obj._id}; 
}); 
+0

To tylko obiekt - cursor.forEach (wywołanie zwrotne, [thisArg]) Obiekt, który będzie wartością tego wewnętrznego wywołania zwrotnego. http://docs.meteor.com/#/full/foreach –

+0

Problem z formatem, teraz cały kod jest tam –

Odpowiedz

14

Można przepisać Twój kod w ten sposób:

var producerIds = Blocks.find({ 
    "location": location 
}).map(function (block) { return block.producerId; }); 

var producersList = Producers.find({ 
    "organizationId": user.organizationId, 
    "_id": { "$in": producerIds } 
}).map(function (obj) { 
    return { 
     "text": obj.name, 
     "id": obj._id 
    }; 
}); 
+0

Czy przetestowałeś to, że nie został on sformatowany prawidłowo –

+0

"tekst: obj.nazw, powinien być" tekst ": obj.name, –

+0

Dzięki, naprawiono literówkę. – chridam

1

Oto czystsza odpowiedź na podstawie Chidrams. Przykład kodu roboczego.

var colleagueIds = Posts.find({ type:"colleagues" }).map(function (person) { return person.title; }); 
     //console.log(colleagueIds); 

     return Meteor.users.find({ 
      "_id": { "$in": colleagueIds } 
     }); 

Zwróć uwagę, że funkcja map zwraca kursor tytułu obiektu My post. Będzie to sensowne, jeśli jesteś dobrym programistą Wordpress. Ale prawdopodobnie chcesz zwrócić _id obiektu.

Powiązane problemy