2016-10-06 8 views
0

У меня возникли трудности с пониманием того, где именно я должен реализовать wrapAsync/bindEnvironment в коде, над которым я работаю. Я обращаюсь к URL-адресу с http/knox и загружаю его в свой ведро S3, которое работает, но когда я пытаюсь вызвать функцию в обратном вызове, меня поражает Meteor code must always run within a Fiber.Проблема с метеорным волокном с обратным вызовом в knox

Я попытался обернуть обратный вызов в bindEnvironment и попытался использовать wrapAsync, но, должно быть, не понял точно, как это работает. Любое руководство будет принята с благодарностью!

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); 
    } 
    }); 
}); 

ответ

1

Попробуйте это:

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