Javascript NodeJs仅返回第一个文档
我使用NodeJs和MongoDb作为后端服务。在我的集合中,我有几个文档具有名为_id和Name的字段,但Node只返回第一个文档并在控制台中显示错误。我只想获取文档的Name字段 错误: 这是我的密码:Javascript NodeJs仅返回第一个文档,javascript,node.js,Javascript,Node.js,我使用NodeJs和MongoDb作为后端服务。在我的集合中,我有几个文档具有名为_id和Name的字段,但Node只返回第一个文档并在控制台中显示错误。我只想获取文档的Name字段 错误: 这是我的密码: var express = require('express'); var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; var bodyParser =
var express = require('express');
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.post('/offers',(req, res) => {
MongoClient.connect(url, (err, db) => {
if(err) throw err;
var dbo = db.db('Tiffino_db');
dbo.collection("Offers")
.find({},{ projection: { _id: 0 } })
.toArray((err, result) => {
if (err) {
console.log("Error:", +err);
}
else {
for(var i = 0;i<result.length;i++){
res.send(result[i].Name);
}
db.close();
}
});
});
});
var express=require('express');
var MongoClient=require('mongodb')。MongoClient;
变量url=”mongodb://localhost:27017/";
var bodyParser=require('body-parser');
var-app=express();
use(bodyParser.json());
use(bodyParser.urlencoded({extended:true}));
app.post(“/offers”,(请求、回复)=>{
MongoClient.connect(url,(err,db)=>{
如果(错误)抛出错误;
var dbo=db.db('Tiffino_db');
dbo.集合(“报价”)
.find({},{投影:{u id:0}})
.toArray((错误,结果)=>{
如果(错误){
日志(“错误:,+err”);
}
否则{
对于(var i=0;i,您似乎试图使用Response.send()在一个循环中发送多个响应,因为响应只发送一次。
这行不通,您需要创建一个名称数组,然后使用Response.Send()执行一次
使用res.send(result.map(r=>r.name))
可能会起作用看起来您正在尝试使用Response.send()在循环中发送多个响应,因为响应只发送一次。
这行不通,您需要创建一个名称数组,然后使用Response.Send()执行一次
使用res.send(result.map(r=>r.name))
可能会起作用我很确定您不应该调用res.send(…)
多次。由于您在循环中调用它,它将发送第一个文档,并按预期在下一个文档中失败。我很确定您不应该调用res.send(…)
多次。由于您在循环中调用它,它将发送第一个文档,并按预期在下一个文档中失败。您应该将结果聚合到一个变量中,然后只调用res.send()一次:
let resultString;
for(var i = 0;i<result.length;i++){
resultString += result[i].Name + '\n';
}
res.send(resultString);
let resultString;
对于(var i=0;i您应该将结果聚合到一个变量中,然后只调用res.send()一次:
let resultString;
for(var i = 0;i<result.length;i++){
resultString += result[i].Name + '\n';
}
res.send(resultString);
let resultString;
对于(var i=0;i
这应该可以工作,因为您只能对单个响应
对象发送一次响应,并且您正在调用该响应以获得结果。长度
次
这应该可以工作,因为您只能在单个响应
对象上发送一次响应,并且您正在为结果.length
多次调用该响应。您不能在for循环中多次使用res.send(),请尝试类似的操作
var data=[];
for(var i = 0;i<result.length;i++){
data.push(result[i].Name);
}
res.send(data);
var数据=[];
对于(var i=0;i您不能在for循环中多次使用res.send(),请尝试以下操作
var data=[];
for(var i = 0;i<result.length;i++){
data.push(result[i].Name);
}
res.send(data);
var数据=[];
对于(var i=0;iUse Mongoose npmBut如何使用mongodb driver实现。Mongoose提供回调,因此在所有数据都被调用后,您将发送数据retrived@SaurabhMistrymongodb包还可以一次性提供所有数据,而且速度比mongoose快,因为它直接使用原始驱动程序取消回调,以便在所有数据都已恢复后发送数据retrived@SaurabhMistrymongodb包还提供了一次所有数据,它的速度比mongoose快,因为它直接使用原始驱动程序。是的,它获取了所有结果,但错误仍然存在。您是否删除了循环?如果没有,我猜您正在尝试在usi之后更改响应头ng Response.send()在执行此操作之前,您只能编辑标题。是的,它会获取所有结果,但错误仍然存在。您是否删除了循环?如果没有,我猜您是在使用Response.send()后尝试更改响应标题在执行此操作之前,您只能编辑标题。如何聚合结果?请提供代码。@Digvijay您可以批准您选择的解决方案吗?如何聚合结果?请提供代码。@Digvijay您可以批准您选择的解决方案吗?感谢Ridham,它以数组的形式发送数据我可以以json对象的形式获取它吗。@Digvijay,使用res.json(result)
更新了代码,如果您想要特定的格式,请编辑问题并发布格式[“a”、“b”、“c”]它本身就是一个有效的JSONTANKS Ridham,它正在以数组的形式发送数据。我如何才能以json对象的形式获取它。@Digvijay,使用res.json(result)
更新了代码,如果您想要特定的格式,请编辑问题并发布格式[“a”、“b”、“c”]本身就是有效的json@Digvijay,使用res.json(response)
在我使用res.json({“Name”:response})时以json格式输出;我在json数组中获取数据,如{“Name”:[“India”,“UK”,…]},我如何在json对象中获取这些数据,例如[{“Name”:India},{“Name”:UK}…]@Digvijay,使用res.json(response)
在我使用res.json({“Name”)时以json格式输出:response});我在json数组中获取数据,如{“Name”:[“India”,“UK”,…]},如何在json对象中获取数据,如[{“Name”:India},{“Name”:UK}]