So here's the deal :
I have an array of objects with a child array of objects
askedAdvices 
   askedAdvice.replayAdvices
I'm looping trough the parent and foreach looping trough the childs and need to populate() two obejcts (I'm using sails)
The child looks like :
askedAdvices = {
     replayAdvices : [{
       bookEnd : "<ID>",
       user : "<ID>"
    }]
  }
So my goal is to cycle and populate bookEnd and user with two findOne query, but I'm going mad with the callback hell. Here's the Models code :
AskedAdvices Model
module.exports = {
  schema : false,
  attributes: {
    bookStart : {
        model : 'book'
    },
    replayAdvices : {
      collection: 'replybookend'
    },
    user : {
        model : 'user',
      required : true
    },
    text : {
      type : "text"
    }
  }
};
ReplyBookEnd Model
module.exports = {
  schema : false,
  attributes: {
    bookEnd : {
        model : 'book'
    },
    user : {
        model : 'user',
        required : true
    },
    text : {
      type : "text"
    }
  }
};
Here's the Method code :
getAskedAdvices : function(req, res) { 
    var queryAskedAdvices = AskedAdvices.find()
        .populate("replayAdvices")
        .populate("user")
        .populate("bookStart")
    queryAskedAdvices.exec(function callBack(err,askedAdvices){
        if (!err) {
            askedAdvices.forEach(function(askedAdvice, i){
                askedAdvice.replayAdvices.forEach(function(reply, i){
                     async.parallel([
                        function(callback) {
                            var queryBook = Book.findOne(reply.bookEnd);
                            queryBook.exec(function callBack(err,bookEndFound) {
                                if (!err) {
                                    reply.bookEnd = bookEndFound;
                                    callback();
                                }                                   
                            })  
                        },
                        function(callback) {
                            var queryUser = User.findOne(reply.user)
                            queryUser.exec(function callBack(err,userFound){
                                if (!err) {
                                    reply.user = userFound; 
                                    callback();
                                }
                            })
                        }
                     ], function(err){
                        if (err) return next(err);
                        return res.json(200, reply);
                     })
                })  
            })
        } else {
            return res.json(401, {err:err})
        }
    })
}
I can use the async library but need suggestions
Thanks folks!