Node.js 角度:通过JS类型';编号';对HTTP响应的响应
我正在开发一个MEAN应用程序(Mongo、Express、Angular、Node)。我想在Express中创建一个GET路由,它使用Mongo的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
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 }