2015-06-04 1 views
10

Sto cercando di tornare collezioni che utilizzano $ e una matrice di ID

Ho il seguente, ma non funziona

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

Questo è solo l'oggetto - cursor.forEach (callback, [thisArg]) Un oggetto che sarà il valore di questo callback interno. http://docs.meteor.com/#/full/foreach –

+0

Problema con il formato, ora è presente il codice intero –

risposta

14

Si potrebbe riscrivere il tuo codice in questo modo:

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

Hai verificato che questo non sia formattato a destra –

+0

"text: obj.name, dovrebbe essere" text ": obj.name, –

+0

Grazie, corretto errore – chridam

1

Ecco una risposta più pulita basata su Chidram. Esempio di codice di lavoro.

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

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

Si noti che la funzione mappa restituisce il cursore del titolo del mio oggetto post. Avrà senso se sei un buon sviluppatore Wordpress. Ma probabilmente vuoi restituire _id dell'oggetto.