首页 > 解决方案 > 在将数据库 ID 与用户请求的 ID 进行比较时,无法读取未定义的属性“forEach”

问题描述

我确实将数据插入到 MongoDB 数据库中,现在我想将用户请求的 id 与存储在数据库中的 id 进行比较。当我使用 forEach 循环执行此操作时,收到错误为TypeError: Cannot read property 'forEach' of undefined。我在堆栈溢出中进行了搜索,但仍然无法找出问题所在。帮我解决这个问题!

这是我的代码:

app.get('/product/:id', (req, res) => {
    MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {
        if (err) throw err;
        var dbo = db.db("product");
        var cursor = dbo.collection("details").find({}).toArray((err, result) => {
            if (err) throw err;
            cursor.forEach((_id)=>{
                if (_id == req.params.id) {

                return true;
                db.close();
                }
            })
            console.log(result);
        });

    });
});

我存储在数据库中的数据是:

[ { _id: '1', producttitle: 'Levis' } ]

标签: node.jsmongodbexpress

解决方案


您需要迭代结果变量而不是游标,这是因为游标变量未定义,因为任务尚未完成。

此外,您需要访问结果的 _id:

result.forEach((currUser)=>{
            if (currUser._id == req.params.id) {

            return true;
            db.close();
            }
        })

推荐阅读