2016-07-26 11 views
0

Ich verwende node.js, um eine Datei in elasticsearch zu indizieren. Ich versuche, Eingabe als Datei von Jmeter geben? mit req.file habe ich versucht, die Datei zu lesen, aber es gibt die Ausgabe als undefiniert. Kann jemand die bessere Lösung angeben?Wie jmeter Datei in lokales System lesen?

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); 
    }); 
}); 

Ich benutze diesen Code

Antwort

0

Ihr fs.writeFile() Aufruf ist asynchron, also wenn client.index() ausgeführt wird, kann die Datei noch nicht geschrieben werden. Sie haben zwei Möglichkeiten:

A. Verwendung fs.writeFileSync() statt

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

B. einen Rückruf an den fs.writeFile() Anruf hinzufügen und client.index() nur in diesem Rückruf nennen:

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

irgendein Glück mit diesem? – Val