我正在使用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 ,所以当我有大量数据时它会很好。
我怎么能这样做?有什么像过滤器吗?
答案 0 :(得分:2)
您可以将来电链接到select
和lean
,只需从您要查询的文档中检索所需的字段:
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);
}
});
});