2016-07-26 18 views
0

私はelasticsearchにファイルをインデックスするのにnode.jsを使用しています。私はjmeterからファイルとして入力を与えようとしていますか? req.fileを使ってファイルを読み込もうとしましたが、出力は未定義です。誰もがより良い解決策を指定できますか?jmeterファイルをローカルシステムに読み込む方法は?

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

あなたfs.writeFile()呼び出しは非同期であるを使用していますので、ときclient.index()実行、ファイルはまだ書かれていない可能性があります。これですべての運を

fs.writeFile('inpu.file',req.file, function(err) { 
    if (err) throw err; 
    client.index({ ... }); 
}); 
+0

A.使用fs.writeFileSync()代わり

fs.writeFileSync('inpu.file',req.file); 

B. fs.writeFile()コールにコールバックを追加し、それだけでコールバックでclient.index()を呼び出します。次の2つのオプションがありますか? – Val

関連する問題