当前位置: 首页 > 知识库问答 >
问题:

节点Js forEach无法获取结果

仲绍晖
2023-03-14

我正在尝试迭代结果数组变量。

我可以在函数内部获取数组值,但是当我尝试在函数外部记录它时,它会显示null。

我在谷歌上搜索了几个帖子,我看到foreach不被推荐,建议是for循环,我甚至尝试过,结果为空。

游标中的问题是什么。forEach()。。。

 router.get('/getlist', function(req, res, handleError) {
    client.connect('mongodb://localhost', function(err, client) {
        if (err) throw err;
        var db = client.db('angular-demo');
        var collection = db.collection("api_details");
        var query = {};
        var cursor = collection.find(query);
        var results = new Array();
        var results = cursor.forEach(
            function(result) {
                return result;

                console.log("insert")
                console.log(results);
            }
        );

        console.log("append")
        console.log(results); //results here shows null
    });
 });

日志结果:

append
[]

insert
[ { _id: 5a6867c8e54f6120709eabc5,
app_id: 'CaseRegistration',
description: 'API to register cases in the system',
cost_per_usage: '0.5',
__v: 0 } ]

insert
[ { _id: 5a6867c8e54f6120709eabc5,
app_id: 'CaseRegistration',
description: 'API to register cases in the system',
cost_per_usage: '0.5',
__v: 0 },
{ _id: 5a6867fde54f6120709eabc6,
app_id: 'CheckCreation',
description: 'CREs create the case with minimal data and assigns it to case initiation team to create checks',
cost_per_usage: '1',
__v: 0 } ]

共有2个答案

秋建义
2023-03-14

在本例中,如果使用forEachfor循环,则不相关。没有填充results变量,因为您试图用forEach的返回结果填充它,而forEach不会返回任何有用的结果。

你要做的就是迭代结果,并在迭代时填充结果数组。

更像这样:

var results = [];
cursor.forEach(
    function(result) {
         results.push(result);
    }
);

console.log(results); // This should be populated now
澹台俊达
2023-03-14

如果您想从find中获取结果,可以使用toArray

cursor.toArray(function (error, documents) {
    console.log(documents)
})
// or
cursor.toArray().then(function (documents) {
    console.log(documents)
})
// or in async function
const documnets = await cursor.toArray()

或者如果您需要以某种方式转换它们,请使用map

 类似资料:
  • 我想将值从反应发送到节点。我正在使用fetch,但我没有得到。这是代码:反应代码: 节点代码: const express=要求(“express”) const cors=require('cors') 常量应用=快速() app.use(cors({源: '*' }) ) app.listen(8000,'localhost') 应用程序。post(“/”,(req,res)= }) 当我参观

  • 我使用的xml文件“savedwsdl.txt”的部分内容如下... 我写了下面给出的java代码,应该用什么来获取wsdl的子节点名:消息标记名为“debitrequest”

  • 这是我的Node Express代码, 但我将请求正文作为 {} 但在我的网络选项卡在Chrome我可以看到请求有效负载。请注意选项在此POST调用之前被激发。 请求标头 POST/abchttp/1.1 host:localhost:8112连接: 保持活动内容-长度:11 pragma:no-cache cache-control:no-cache 来源:http://localhost:42

  • 在本章中,将学习如何获取XML DOM对象的节点值。 XML文档具有称为节点的信息单元的层次结构。 对象有一个属性 - ,它返回元素的值。 在以下部分中,将讨论学习 - 获取元素的节点值 获取节点的属性值 以下所有示例中使用的node.xml如下所示 - 1. 获取节点值 使用方法以文档顺序返回具有给定标记名称的所有元素的。 示例 以下示例(getnode example.html)将XML文档(

  • 一个节点就象征着一个数据,现在的或者未来的,它是一种预期,所以我们也对应的有获取即时值和获取未来值两种方式。 获取即时值 对于一个节点来说,访问T value属性是最简单有效的形式,但是由于空值,我们可能需要特殊注意一下: EZRMutableNode<NSNumber *> *node = [EZRMutableNode new]; NSNumber *value = node.value;