Угловая функция HTTP POST вызывает дважды - PullRequest
0 голосов
/ 26 сентября 2019

Я вызываю эту службу ниже и передаю объект LocalDetails

import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import 'rxjs/Rx';
import { share } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class OtherdataService {
  constructor(private http: Http) { }

  sendDBInfo(LocalDetails){
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let body = JSON.stringify(LocalDetails);
    let options = new RequestOptions({ headers: headers });
    return this.http.post('http://hostname/api/requestuPatch/', body, options).map(result => result.json()).pipe(share());
  }
}

В файле node.js я пытаюсь выполнить один сценарий оболочки, в котором у меня есть аргументы, поэтому я конвертируюотправлять объект в массив и передавать его оболочкой в ​​коде exec node.js

app.post('/api/requestPatch/', function (req, res) {
    var data = JSON.parse(JSON.stringify(req.body));
    var shellargs = [];
    for(myKey in data){
        shellargs.push(data[myKey]);
    }

    var commacommand = 'bash /abc/bbc.sh ' + shellargs;
    var command = commacommand.split(',').join(' ');
    exec(command, function(error,stdout,stderr){
        if(error !== null){
            console.error();
        }
        else{
            res.end("success");
            console.log(stdout)
        }
    })
});

, но exec (команда) вызывает дважды.не могли бы вы помочь

1 Ответ

0 голосов
/ 26 сентября 2019

это происходит потому, что вы не отписываетесь от наблюдаемого, вам нужно сделать это:

  destroy$ = new Subject<void>();
    ....
    ....
  return this.http.post('http://hostname/api/requestuPatch/', body, options).map(result => result.json()).pipe(takeUntil(this.destroy$), share());
  ... 
  ...

  ngOnDestroy() {
    this.destroy$.next();
    this.destroy$.complete();
  }


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...