将stdout存储为变量,然后将其发送回angular

时间:2019-06-16 16:14:41

标签: node.js child-process

我正在处理角度和节点, 我想在客户端单击按钮时调用cli命令。命令行将调用python脚本

我看到我可以通过调用子程序和http get,并链接到nodejs / express中的休息点来完成子进程。

问题是我想发回执行http的子组件,以获取子进程的标准输出。

但是我不能成功做到这一点。

shell正确记录了stdout,以便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'])

resultHorizo​​n var保持为空。

我只是尝试使用stdout值初始化var,但是它不起作用。

我不知道我在使用res.send函数做对了吗。

感谢任何帮助人员!

0 个答案:

没有答案