如何使用node和express.js仅在json响应中发送特定字段?

时间:2016-11-14 06:21:45

标签: json node.js mongodb express

[ 
{ 
   id: 6dcba0f57c9b73cc1,
   USER_ID: '945',
   ORDER_ID: '35220',
   PRODUCT_ID: '9982',
   CODE: '418567066',
   POINTS: '2000'

},
 {
   id: 4dcba0f57c9b73cc7,
   USER_ID: '945',
   ORDER_ID: '43521',
   PRODUCT_ID: '1071',
   CODE: '4004091261',
   POINTS: '1000',
 },
 { id: dcba0f57c9b73cce,
   USER_ID: '945',
   ORDER_ID: '13594',
   PRODUCT_ID: '2482',
   CODE: '7592231244',
   POINTS: '2000',
 },
 {
   id: 0f57c9b73cc74dcba,
   USER_ID: '345',
   ORDER_ID: '43528',
   PRODUCT_ID: '1071',
   CODE: '4004091267',
   POINTS: '1000',
 }
]

以上文件存储在我的pointummaries集合中。

   id
   USER_ID
   ORDER_ID
   PRODUCT_ID
   CODE
   POINTS

而不是在每个文档中发送所有上述字段。我只需要发送

USER_ID
 ORDER_ID 
 CODE

以下是我的控制器代码,它将仅显示/发送USER_ID: '945'点详细信息。

exports.userpos = function(req, res) {
    console.log(req.params.id)
    PointSummary.find({'USER_ID':'945'}).exec(function (err, PointSummarys) {
    if(err) { return handleError(res, err); }
     //return res.status(200).json(PointSummarys);
     return res.status(200).json({});
  });
};

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可以在db查询中传递要返回的所有字段。

exports.userpos = function(req, res) {
    console.log(req.params.id)
    PointSummary.find({'USER_ID':'945'}, {
        'USER_ID': 1,
        'ORDER_ID': 1,
        'CODE': 1
    }).exec(function (err, PointSummarys) {
    if(err) { return handleError(res, err); }
     //return res.status(200).json(PointSummarys);
     return res.status(200).json({});
  });
};

附注:理想情况下,您希望将密钥名称保持为小写。 user_id代替USER_ID