Node.js 角度:通过JS类型';编号';对HTTP响应的响应

Node.js 角度:通过JS类型';编号';对HTTP响应的响应,node.js,angular,mongodb,express,angular-httpclient,Node.js,Angular,Mongodb,Express,Angular Httpclient,我正在开发一个MEAN应用程序(Mongo、Express、Angular、Node)。我想在Express中创建一个GET路由,它使用Mongo的countDocuments()方法返回集合中的条目数 获取路线: app.get('/total', (req, res) => { collection.countDocuments({}, function(err, num) { assert.equal(null, err); var total = {'total

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

获取路线:

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)
返回
Number
而不是
Object

上面的路线是可行的,但让
total
对象对我来说似乎是一种黑客行为。是否有一种更有效的方法来传递
Number
类型的内容,以便它可以被用户使用

以下是相关的角度组件代码:

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;
      }
    );
  }
}

如果您在
res.send
中发送一个号码,在
express
中,它将其作为状态码,因此不允许发送类型为
number
的号码,有两种解决方案

解决方案:1 将其作为字符串发送,并在客户端使用
parseInt

解决方案:2
发送一个你提到的对象。

你能把total变量改为{total:num};删除引号。
var result = 5;
res.send(result.toString());
var result = 5;
res.send({result}); //Iquivalent to { result: 5 }