Сохранить stdout как переменную и отправить обратно в angular - PullRequest
0 голосов
/ 16 июня 2019

Я работаю с угловым и узлом, я хочу вызвать команду 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.

Спасибо за любую помощь, ребята!

...