我使用node.js将文件索引到elasticsearch。我试图从jmeter输入文件?使用req.file我尝试读取文件,但它提供输出为undefined。任何人都可以指定更好的解决方案吗?
var http = require('http');
var express = require('express');
var app = express();
var CircularJSON = require('circular-json');
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: '10.96.82.98:9200',
log: 'trace'
});
http.createServer(app).listen(1000);
//indexing a document
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.post('/post/:index/:type/:id/', function(req, res){
var fs = require("fs");
fs.writeFile('inpu.file',req.file);
client.index({
index: req.params.index,
type: req.params.type,
id: req.params.id,
body:JSON.parse(fs.readFileSync(__dirname +'/inpu.file'))
},function (error, response) {
console.log(response);
res.send(response);
});
});
我正在使用此代码
答案 0 :(得分:0)
您的fs.writeFile()
调用是异步的,因此执行client.index()
时,可能尚未写入该文件。您有两种选择:
一个。请改用fs.writeFileSync()
fs.writeFileSync('inpu.file',req.file);
B中。添加回调到fs.writeFile()
来电并仅在该回调中调用client.index()
:
fs.writeFile('inpu.file',req.file, function(err) {
if (err) throw err;
client.index({ ... });
});