发布请求未从Angular到达Node

时间:2019-03-08 12:51:37

标签: javascript node.js angular typescript

我通过单击前端上的“提交”按钮来触发一个名为upload()的函数。

在我的app.html中:

<div class="row" style="padding:10px;">
        <button type="submit" class="btn btn-primary" style="margin-left:10px;" (click)="upload()">Submit</button>
    </div>

在我的app.ts中:

upload() {

    this.files = {
      pdf_one: './server/test-pdfs/pdf-sample.pdf',
      pdf_two:  './server/test-pdfs/pdf-sample.pdf',
    };

    this.filesToUpload = [];

    this.filesToUpload.push(this.files.pdf_one);
    this.filesToUpload.push(this.files.pdf_two);

    this.getMergedPDF(this.filesToUpload);
}

getMergedPDF(filesToUpload): Observable<string> {
        return this.http.post<string>('http://localhost:8081/merge-pdf', JSON.stringify(filesToUpload));
 }

我已经设置了断点,上面的函数就可以了。就在到达node.js端时,什么也不会触发。

这是我在nodejs端设置api端点的方法:     server.js

app.post('/merge-pdf', (req, res) => {
    this.fileList  = req;

    PDFMerge(this.fileList, {output: `${__dirname}/test-pdfs/merged-pdf.pdf`});
    res.send(200);
});

const server = app.listen(8081, () => {
    console.log('Listening on port %s...', server.address().port);
});

我想知道在未触发api端点的情况下我会怎么做?

编辑:

我已经尝试过:

getMergedPDF(filesToUpload): Observable<string> {
    return this.http.post<string>('http://localhost:8081/merge-pdf', JSON.stringify(filesToUpload))
    .subscribe(data  => this.mergedUrl = data);
  }

但是会发生此错误:

Type 'Subscription' is not assignable to type 'Observable<string>'.
  Property '_isScalar' is missing in type 'Subscription'.'

1 个答案:

答案 0 :(得分:5)

您需要订阅。可观察对象是惰性的,除非您订阅它,否则实际上不会执行POST调用。

this.http.post(...).subscribe(...)

您可以通过检查浏览器的“网络”选项卡来确保节点没有故障,并确保首先没有进行HTTP调用。