Javascript NodeJs正在发送空响应
我正在使用NodeJS和MongoDb作为后端服务。我正在尝试根据条件检索不同的数据,就像我想要获取订单状态待定的名称一样: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
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