Angular:将 JS 类型 'Number' 传递给 HTTP 响应

Angular: pass JS type 'Number' to an HTTP response

我正在开发 MEAN 应用程序(Mongo、Express、Angular、Node)。我想在 Express 中创建一个 GET 路由,它使用 Mongo 的 countDocuments() 方法来 return 集合中的条目总数。

获取路线:

app.get('/total', (req, res) => {
  collection.countDocuments({}, function(err, num) {
    assert.equal(null, err);
    var total = {'total' : num}
    res.send(total);
  });
});

我创建了 total 对象,因为据我了解,Angular 的 HttpClient 模块仅适用于在 JSON 中格式化的数据。我试图将 num 作为 res.send(num) 直接传递,但它不起作用。我认为这是因为 typeof(num) returns Number 而不是 Object.

上面的路线可行,但制作 total 对象对我来说似乎是一个 hack。有没有更有效的方法来传递 Number 类型的东西,以便它可以被 Angular 使用?

这里是相关的Angular组件代码:

export class AppComponent implements OnInit {
  total: object;

  constructor(private http: HttpClient){

  }

  ngOnInit(): void {
    this.http.get('http://localhost:1337/total').subscribe(
      data => {
        this.total = data;
      }
    );
  }
}

如果在express中发送res.send中的数字,它会将其作为状态码,因此不允许发送Number类型的数字,有2种解决方案。

解法:1

var result = 5;
res.send(result.toString());

以字符串形式发送,并在客户端使用parseInt

解法:2

var result = 5;
res.send({result}); //Iquivalent to { result: 5 }

按照你说的发送一个对象。