Javascript NodeJs正在发送空响应

Javascript NodeJs正在发送空响应,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在使用NodeJS和MongoDb作为后端服务。我正在尝试根据条件检索不同的数据,就像我想要获取订单状态待定的名称一样: const coll = client.db("My_db").collection("Orders"); coll.distinct("name",{order_status:"pending"},(function(err,docs){ let output = docs.map(r => ({'na

我正在使用NodeJS和MongoDb作为后端服务。我正在尝试根据条件检索不同的数据,就像我想要获取订单状态待定的名称一样:

const coll = client.db("My_db").collection("Orders");
            coll.distinct("name",{order_status:"pending"},(function(err,docs){

                  let output = docs.map(r => ({'name':r.name}));
                  res.send(output);       

            }));
但它发送的是空数组,如下所示:

[
 {},
 {},
 {},
 {},
 {},
 {}
]
有人请让我知道我做错了什么。任何帮助都将不胜感激

谢谢

根据文档

结果将是数组。但您正在匹配
r.name
它是一个对象键

因此,我们只需要辩论

let output = docs.map(r => ({'name':r}));

您不需要在该响应上运行map。distinct函数返回不同值的数组。尝试console.log(docs)并检查它

因为您已将字段指定为名称,所以不需要使用r.name,只需使用r

您可以参考,希望这对您有所帮助:)

如果MongoDB高于2.2,并且希望查找多个字段,则可以使用聚合

collection = db.tb;
collection.aggregate([
  {"$group": { "_id": { name: "$name", email: "$email" } } }
]);

您可以尝试将输出变量console.log记录下来吗?在执行
console.log()
itshowing
{name:undefined}
时,您确定您正在向我们显示正确的路由处理程序吗?你能试试
res.send(“test”)以确保?因为我不知道上面的代码会如何导致您发布的响应。一切都是正确的,我得到了解决方案,问题出在
r.name
我只需要使用
r
。现在它显示的是正确的名称。使用
console.log(docs)打印
docs
对象。让我们先检查一下错误。如果我想得到电话号码和姓名呢。你可以用for来做。我还在学习mongo db