2017-08-23 1 views
0

Jungs nicht aufrufen. Ich versuche, Benutzer zu migrieren, aber die Versprechen werden nie aufgerufen.Q.alle Aufrufe von Array

User = mongoose.model 'User' 
    User.find({"hisId" : {$exists : true}}).exec (err, doc)-> 
    if err 
     console.error err 
     process.exit() 
    if not doc or doc.length < 1 
     process.exit() 
    i = 0 
    promiseArray = [] 
    while i < doc.length 
     updateFunc = (doc) -> 
     defer = Q.defer() 
     User.update({ 
      "_id" : ObjectId(doc[i].juniorId) 
      "friends.user": ObjectId(doc[i]._id) 
     },{ 
      $set: 
      "friends.$.canAdmin" : true 
     }, (err, updateResult) => 
      if err 
      console.error err 
      defer.reject() 
      defer.resolve() 
     ) 
     return defer.promise 
     updateFunc.bind(null, doc) 
     promiseArray.push updateFunc 
     i++ 
    Q.all(promiseArray).then(-> 
     console.log 'Why did get here before promises all fulfilled?' 
    ).done (-> 
     process.exit() 
    ) 

Ich habe es mit der Q.promise-Lösung versucht, aber es funktioniert auch nicht. Das Promise-Array ist voll mit Funktionen, ich habe es überprüft.

Antwort

0

Das Versprechen Array ist mit Funktion gefüllt, aber es ist nicht mit einem Versprechen erfüllt, daher ist es erfüllt.

Statt promiseArray.push(updateFunc(doc))

+0

Ah tun, ich völlig verpasst. Vielen Dank. –

Verwandte Themen