2016-09-11 6 views
2

私はAWS sdkを使ってオブジェクトをS3バケットにアップロードしていますが、リアクティブプログラミングrxjsを使ってストリームを作成しています。だから、S3のアップロードをストリームとして行い、API呼び出しをストリームとして起動する最良の方法は何ですか?上記の例ではリアクションプログラミングRXJSをAWS SDK with javascript

var stream = Rx.Observable.fromPromise(s3.putObject(params).promise()); 
stream.subscribe(data=>{},err=>{}) 

は、それが動作しますが、問題は、「データ」ファイルが正常S3バケットにアップロードしてしまった後でも、空のオブジェクトであるので、私はいくつかを必要とするので、私はAPIのストリームを行うことはできませんファイル情報。

Rx.Observable.fromNodeCallback(s3.upload)を使用する必要がありますか?アドバイスをお願いします、ありがとうございます。

+0

? –

+0

@MarkB関数(err、data)を使用しているときに、データオブジェクトにあるものと同じようにファイル情報を返すべきではありませんか? 1つはコールバック関数であり、もう1つは約束を使用していますが、約束は何も返されません。 AWS SDKのバグですか?どうも。 –

+0

約束を使用していないときに返されるファイル情報の例を表示できますか? –

答えて

1

中間プロミスを作成せずに、コールバックからObservableストリームを作成できます。あなたはファイルの詳細情報を取得したい場合は、結果として、AWSのupload method SDKを使用してみてください:

あなたは、データ・オブジェクトに戻ってくることを期待しない何
const upload = s3.upload(config); 
const uplaod$ = Rx.Observable.fromNodeCallback(upload.send, upload)(); 
upload$.subscribe(v => console.log(v)); // will print file details 
+0

これは私が探しているものです。ありがとうございます。私は前にfromNodeCallbackを試しましたが、失われた.sendのために動作しませんでした –