Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJs仅返回第一个文档_Javascript_Node.js - Fatal编程技术网

Javascript NodeJs仅返回第一个文档

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 =

我使用NodeJs和MongoDb作为后端服务。在我的集合中,我有几个文档具有名为_id和Name的字段,但Node只返回第一个文档并在控制台中显示错误。我只想获取文档的Name字段

错误:

这是我的密码:

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}]