2016-06-15 13 views
8

Tôi đã json này:làm thế nào để tạo ra một readstream với một bộ đệm sử dụng nodejs

var myJSON = '{"kind": "person", "fullName": "Rivka3"}'; 

Tôi đang cố gắng để uploed nó để BigQuery, sử dụng createReadStream. khi tôi lưu nó localy tôi thành công:

fs.writeFile("/tmp/bq_json_file_new.json", myJSON, function(err){}); 
fs.createReadStream("/tmp/bq_json_file_new.json") 
    .pipe(table.createWriteStream(metadata)) 
    .on('complete', function(job) { 
    job 
     .on('error', console.log) 
     .on('complete', function(metadata) { 
     console.log('job completed', metadata); 
     }); 
    }); 

bây giờ tôi đang cố gắng để làm điều này mà không lưu nó localy - sử dụng một bộ đệm:

fs.createReadStream(new Buffer(myJSON, "utf8")) 
    .pipe(table.createWriteStream(metadata)) 
    .on('complete', function(job) { 
    job 
     .on('error', console.log) 
     .on('complete', function(metadata) { 
     console.log('job completed', metadata); 
     }); 
    }); 

nhưng tôi nhận được lỗi này:

fs.js:575 
    binding.open(pathModule._makeLong(path), 

TypeError: path must be a string 

Trả lời

14

sử dụng stream giải quyết sự cố:

var stream = require('stream'); 

var bufferStream = new stream.PassThrough(); 

bufferStream.end(new Buffer(myJSON)); 

bufferStream.pipe(table.createWriteStream(metadata)) 
        .on('complete', function(job) { 
        job 
         .on('error', console.log) 
         .on('complete', function(metadata) { 
         console.log('job completed', metadata); 
         }); 
        }); 
Các vấn đề liên quan