2017-02-12 16 views
0

Скажем у меня есть следующий массив:узел д Переберите массива и добавить daata

[{id: 1, name: 'Hello', otherTableId: 2}]; 

Теперь я хочу перебрать все эти массивы и получить некоторые данные из моего MongoDB, что я хочу, чтобы добавить к новому массив, который затем возвращается.

Как мне сделать это с q?

Вот что я до сих пор, но я не знаю, что заменить foreach с:

router.route('/api/conversations') 
.get(function (req, res) { 
    mongoose.models.conversation.find({users: {$all: [req.query.id]}}, function (err, conversation) { 
     if (err) { 
      res.status(500).send(err) 
     } 
     else { 
      var returnArray =[]; 
      conversation.forEach(function (x) { 

      }) 
     } 
    }); 
}); 

Мои схемы

var conversation = mongoose.Schema({ 
    users: Array 
}); 

var user = mongoose.Schema({ 
    username: String, 
    password: String, 
    firstname: String, 
    lastname: String, 
    is_active: Boolean, 
    user_type: Number 
}); 

Что я хочу вернуться в основно список беседы и их пользователей.

Как это: [{conversation_id: String, userOne: Object, userTwo: Object}]

Однако им не уверен, что это возможно?

ответ

1

Прежде всего, в мангуста You логика населения встраиваемый, которая означает, что вы должны быть в состоянии добавить что-то вроде этого:

conversation 
.find({users: {$all: [req.query.id]}) 
.populate('otherTableId') 
.exec(function (err, conversations) { 
    // now the convesations array should have followed the link from 'otherTableId' if you have defined the ref in the schema. 
}) 

Если интерпретировать вопрос более общий я думаю, что вы спрашиваете о Библиотека обещаний Q, которая должна поддерживать метод Promise.all. Я использую стандартную реализацию ES6 ниже, но, пожалуйста, не стесняйтесь найти соответствующие методы в Q.

const ids = [1,2,3,4] 
const promises = ids.map(id => mongoose.models.childTable.findOne(id)) 
Promise.all(promises).then(array => { 
    // here you will find the array containing the objects 
}) 
+0

Привет, Кристиан благодарит вас за ответ. ive добавил некоторые из моих оснований кода, может быть, вы могли бы взглянуть? –

+0

Схема разговора должна иметь ссылку на пользовательскую схему. При запросе разговоров вы должны использовать заполнение, чтобы также напрямую включать объект пользователя. Пожалуйста, взгляните на эту страницу, чтобы понять, что происходит: http://mongoosejs.com/docs/populate.html –

+0

имеет ссылку на пользовательскую схему, но в виде массива –