【问题标题】:Angular: pass JS type 'Number' to an HTTP response [duplicate]Angular:将 JS 类型“数字”传递给 HTTP 响应 [重复]
【发布时间】:2019-01-25 12:58:21
【问题描述】:

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

获取路线:

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 类型的东西,以便 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;
      }
    );
  }
}

【问题讨论】:

  • 你能把你的总变量改成{total: num}吗?删除引号。

标签: node.js angular mongodb express angular-httpclient


【解决方案1】:

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

解决方案:1

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

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

解决方案:2

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

如您所述发送一个对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多