我正在开发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;
}
);
}
}
答案 0 :(得分:1)
如果您在res.send
的{{1}}中发送数字,则将其作为状态代码,因此不允许发送类型为express
的数字,有2种解决方案。
Number
以字符串形式发送,然后在客户端使用var result = 5;
res.send(result.toString());
。
parseInt
发送您提到的对象。