Я работаю с угловым и узлом,
я хочу вызвать команду cli при нажатии кнопки на стороне клиента. Командная строка вызовет скрипт Python
Я увидел, что могу сделать это с помощью дочернего процесса, вызвав http и get, связанный с точкой отдыха в nodejs / express.
Проблема в том, что я хотел бы отправить обратно в мой угловой компонент, который выполняет http, получает стандартный вывод дочернего процесса.
Но я не могу этого сделать.
Оболочка корректно регистрирует стандартный вывод, чтобы он работал на скрипте python.
Вот моя конечная точка экспресс-отдыха.
app.get('/scriptPython', function (req, res) {
console.log(JSON.parse(JSON.stringify(req.query.id)))
var id = req.query.id[0]
var result=''
exec("python Internal_scraping_whorizon.py " + id , function (error, stdout, stderr) {
console.log(stdout)
result=stdout
if (error !== null) {
console.log('exec error: ' + error);
}
res.write(JSON.stringify(stdout))
});
console.log('my Result is : ' + result.toString())
res.send(result)
})
Вот мой угловой компонент:
async selectRow(row) {
var params = new HttpParams();
var agg = [];
this.aggre.forEach(element =>
agg.push(element)
)
console.log(agg)
params = params.append('Name', row)
agg.forEach(element => {
console.log(element),
params = params.append('agg', element)
})
console.log(params)
await this.http.get('report/hotelID', {params: params}).toPromise()
.then(result => {
console.log(result), this.hotelIDS = JSON.parse(JSON.stringify(result['data'])), console.log(this.hotelIDS)
;return this.hotelIDS})
var params = new HttpParams();
this.hotelIDS.forEach(element=>{
params =params.append('id', element.HotelID)})
console.log(params)
await this.http.get('/scriptPython', {params: params}).toPromise().then(res=>{console.log(res);this.resultHorizon=res; return this.resultHorizon})
console.log(row);
console.log(this.resultHorizon['stdout'])
resultHorizon var остается нулевым.
Я попытался просто инициализировать переменную со значением stdout, но она не работает.
Я не удивлен, я все делаю правильно с функцией res.send.
Спасибо за любую помощь, ребята!