我正试图从S3获得一个文件,并将其存储在NoSQL Couchbase中。
我试图用以下代码存储outputStream:
var outputStream1 = fs.createWriteStream("./tmp/" + url);
// if statusCode == 200, then we have the file, lets save it in out cache and then send it to the client
res.on('data', function (chunk) {
outputStream1.write(chunk);
});
res.on('end', function () {
var value = outputStream1;
cb.set(key, value, function (err, result) {
if (err) { console.log(err); }
console.log("Set item for key with CAS: " + result.cas);
cb.get(key, function (err, result) {
if (err) { console.log(err); }
console.log("Value for key is: " + result.value);
var readStream = result.value;
readStream.on('open', function () {
console.log(response);
});
readStream.on('end', function () {
readStream.close();
});
});
});
问题是我存储了outputStream,然后试图读取它。
我寻找一种方法来存储我们在Couchbase中从S3获得的数据对象,然后能够将其发送到客户机。这可能吗?
我认为你可以把Buffer设置为值,稍后再获取。首先,您需要将数据保存在缓冲区中:
var buffers = [];
res.on('data', function (chunk) {
buffers.push(chunk);
});
res.on('end', function () {
var value = Buffer.concat(buffers);
cb.set(key, value, function (err, result) {
if (err) { console.log(err); }
console.log("Set item for key with CAS: " + result.cas);
cb.get(key, function (err, result) {
if (err) { console.log(err); }
console.log("Value for key is: " + result.value); // You should get your value in here });
});
你也可以使用concat-stream模块来帮助你。我已经回答了一个关于缓冲流的类似问题