2016-07-26 4 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()이 실행 파일이 아직 작성되지 않을 수 있습니다. 대신

A. 사용 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({ ... }); 
}); 
+0

이 어떤 행운을 당신은 두 가지 옵션이 있습니다? – Val

관련 문제