2014-07-10 2 views
0

AWS S3 비동기 기능을 해제하고 이상한 오류로 실행하려고합니다.Amazon S3 기능을/노드를 사용하여 약속으로 전환하는 중 오류가 발생했습니다.

s3.getObject({ ... }, function(err, data) { 
    ... 
}); 
다음 코드, 나는이 오류가

var s3 = new AWS.S3(); 
var when = require('when'); 
var nodefn = require('when/node'); 

var getObjectP = nodefn.lift(s3.getObject); 

getObjectP({ 
    Bucket: 'bucket_name', 
    Key: 'key_name' 
}) 
.then(function(data) { 
    ... 
}, function(err) { 
    ... 
}); 

,

Object #<Object> has no method 'makeRequest' 
다음

getObject가 정상적으로 생겼는지는 (내가 대신 약속의 콜백을 사용할 때 잘 작동)을 감안할 때

내가 잘못 사용하고있다 nodefn.lift? 그것은 꽤 똑바로 보인다. 관심있는 사람을위한 문서는 다음과 같습니다. https://github.com/cujojs/when/blob/master/docs/api.md#nodelift

답변

3

이 메서드는 메서드로 호출되지 않기 때문에 잘못된 context이 있습니다. 시도해보십시오. bind

var getObjectP = nodefn.lift(s3.getObject.bind(s3)); 
+0

와우, 나는 그것을 결코 이해하지 못했을 것입니다. 감사! – Cody