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

时间:2019-01-25 03:28:38

标签: 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' : num}
    res.send(total);
  });
});

我制作了total对象,是因为据我了解,Angular的HttpClient模块仅适用于以JSON格式格式化的数据。我尝试直接将num传递为res.send(num),但是它不起作用。我认为这是因为typeof(num)返回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;
      }
    );
  }
}

1 个答案:

答案 0 :(得分:1)

如果您在res.send的{​​{1}}中发送数字,则将其作为状态代码,因此不允许发送类型为express的数字,有2种解决方案。

解决方案:1

Number

以字符串形式发送,然后在客户端使用var result = 5; res.send(result.toString());

解决方案:2

parseInt

发送您提到的对象。