快速查询失败并带有整数

时间:2016-10-08 20:56:47

标签: node.js mongodb express request endpoint

我正在运行一台Express服务器来创建MongoDB中的端点,我将基于本指南https://devcenter.heroku.com/articles/mean-apps-restful-api

在尝试定义查询字符串时,我有以下功能:

app.get("/contacts", function(req, res) {
  db.collection(CONTACTS_COLLECTION).find(req.query).toArray(function(err, docs) {
      res.status(200).json(docs);  
  });
});

这可以按预期使用查询,其中查询参数是字符串,例如/contacts?name=Bob。但是,如果我查询的字段恰好是整数(例如使用查询/contacts?age=21),我发现响应产生一个空数组... []

2 个答案:

答案 0 :(得分:1)

请求查询中的所有内容都是字符串,因此如果您设置了年龄= 21的网址,则必须将其解析为整数。

app.get("/contacts", function(req, res) {
   var condition = {};
  if(req.query.age) {
    condition.age = parseInt(req.query.age, 10);
  }
  db.collection(CONTACTS_COLLECTION).find(condition).toArray(function(err, docs) {
      res.status(200).json(docs);  
  });
});

答案 1 :(得分:0)

否定这一点。 http请求将所有内容解释为字符串。

我在express-query-int package

中找到了解决方案