我在将 s3 对象主体的字符串发送到客户端时遇到问题
我使用aws sdk作为 Node ,以及apollo服务器(express)、express、react
我确实从 s3 获取了对象并创建了可读流。然后我监听数据事件,以便我可以将字符串发送到客户端
let data = '';
s3.getObject(params).createReadStream().on('data', function(chunk) {
data += chunk;
});
return { data }
我以为数据不是空字符串,但它是空字符串 我该怎么做才能解决这个问题?
编辑:
let data = '';
function promiseBasedRequest (params) {
return new Promise((resolve, reject) => {
s3.getObject(params).createReadStream()
.on('data', function (chunk) {
data += chunk;
})
.on('end', function () {
resolve(data);
})
.on('error', function (err) {
reject(err);
});
});
}
await promiseBasedRequest(params);
这符合我的预期。
最佳答案
您没有等待写入结束
。首先,该函数需要异步 promise 或回调。
function getData(params) {
let data = ''
return new Promise((res, rej) => {
let data = '';
s3.getObject(params).createReadStream()
.on('data', function (chunk) {
data += chunk;
})
.on('end', function(){
res(data);
})
.on('error', function(){
rej()
})
})
}
您可以通过以下方式使用该功能:
(async(){
const data = await getData()
})();
或者getData().then(..)
编辑:此外,getObject
也有一个 promise
方法。
s3.getObject(params).promise().then(...).catch(...)
关于javascript - 我想将 s3 对象的字符串发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56935685/