NodeJS / Mongoose过滤器JSON

时间:2014-10-14 16:17:06

标签: node.js mongodb express

我正在使用ExpressJS,NodeJS和Mongoose构建JSON API:

输入 - > ID:

app.get('/folder/:id', function (req, res){
  return Cars.find({reference: req.params.id}, function (err, product) {
    if (!err) {
      console.log(product);
      return res.send(product);
    } else {
      return console.log(err);
    }
  });
});

它很好地展示了JSON:

[{"_id":"B443U433","date":"2014-08-12","reference":"azerty","file":"087601.png","
....:.
{"_id":"HGF6789","date":"2013-09-11","reference":"azerty","file":"5678.pnf","
...

我只想在JSON中显示_id ,所以当我有大量数据时它会很好。

我怎么能这样做?有什么像过滤器吗?

3 个答案:

答案 0 :(得分:2)

您可以将来电链接到selectlean,只需从您要查询的文档中检索所需的字段:

app.get('/folder/:id', function (req, res){
  return Cars.find({reference: req.params.id}).select('_id').lean().exec(
    function (err, product) {
      if (!err) {
        console.log(product);
        return res.send(product);
      } else {
        return console.log(err);
      }
    });
});

答案 1 :(得分:0)

您必须遍历“products”对象以获取ID

这样的事情: (免责声明:我没有测试过这个)

  app.get('/folder/:id', function (req, res){
  return Cars.find({reference: req.params.id}, function (err, product) {
    if (!err) {
      console.log(product);

      var ids = new Array();
      for(var i = 0; i < product.length; i++){
          ids.push(product[i]._id);
      }
      return res.send(JSON.stringify(ids));
    } else {
      return console.log(err);
    }
  });
});

- 编辑

此外,“产品”可能已经是JSON字符串。您可能希望在循环之前解析它。

product = JSON.parse(product);

答案 2 :(得分:0)

其他答案都是正确的,但我认为最好像这样限制猫鼬中的数据:(它与mongo shell命令相同)

app.get('/folder/:id', function (req, res){
    Cars.find({reference: req.params.id} ,{ _id : true } ,function (err, product) {
        if (!err) {
            console.log(product);
        } else {
            console.log(err);
        }
    });
});