我想从javascript对象创建一个“假文件”,因为我正在使用的libarry期望一个文件作为输入,但我在内存中有一个对象。
所以它期待像这样的代码
var file = fs.readFileSync('{/path/to/file}');
lib.addDocument(config, file),
我想从我称之为有效负载的对象创建一个假文件,然后发送它,到目前为止我最接近的尝试是这样的:
var fake_file = new stream.Readable({ objectMode: true });
fake_file.push(msg.payload);
fake_file.push(null);
lib.addDocument(config, fake_file),
我觉得我很亲密,但我不能让它发挥作用。当前错误是
{ Error: Unexpected end of multipart data
答案 0 :(得分:1)
var Readable = require('stream').Readable
var obj = { objectMode : true};
var rStream = new Readable
rStream.push(JSON.stringify(obj));
rStream.push(null); //EOF
lib.addDocument(config, rStream)
对于低于v10及更高版本v4的旧版本:
var Readable = require('stream').Readable
var obj = { objectMode : true};
var chars=JSON.stringify(obj).split('');
function read(n){this.push(chars.shift())}
var rStream = new Readable({read:read});
lib.addDocument(config, rStream)
答案 1 :(得分:0)
您的代码缺少对象 - >字符串转换。可以使用JSON.stringify:
lib.addDocument(config, JSON.stringify(msg.payload));