2016-10-06 2 views
0

J'ai de la difficulté à comprendre où exactement je devrais implémenter wrapAsync/bindEnvironment dans le code sur lequel je travaille. Je fais un appel à un URL avec http/knox et je le télécharge dans mon seau S3 qui fonctionne, mais quand j'essaie d'appeler la fonction dans le rappel, je reçois un Meteor code must always run within a Fiber.Problème de Meteor Fiber avec callback dans knox

J'ai essayé d'encapsuler le rappel dans bindEnvironment et j'ai essayé d'utiliser wrapAsync, mais je n'ai pas compris exactement comment cela fonctionne. Toute orientation sera grandement appréciée!

http.get(imageUrl, function(res) { 
    let headers = { 
    'Content-Length': res.headers['content-length'] 
    , 'Content-Type': res.headers['content-type'] 
    }; 
    S3.knox.putStream(res, `/${imageName}`, headers, function(err, res) { 
    if (err) { 
     log.error(`(imageUpload): Error uploading image with knox: ${err}`); 
    } else { 
     let amazonImagePath = `https://s3.amazonaws.com/${bucketName}/${imageName}`; 
     // TODO Figure out why fiber issue is happening with expenseInsert in callback 
     expenseInsert(expenseObj, amazonImagePath); 
    } 
    }); 
}); 

Répondre

1

Essayez ceci:

S3.knox.putStream(res, `/${imageName}`, headers, Meteor.bindEnvironment(function(err, res) { 
    //rest of the code  
}));