将数据库 ID 与用户请求的 ID 进行比较时,无法读取未定义的属性'forEach'



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

这是我的代码:

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

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

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

result.forEach((currUser)=>{
if (currUser._id == req.params.id) {
return true;
db.close();
}
})

如果您不介意使用async/await:

app.get('/product/:id', (req, res) => {
MongoClient.connect(url, { useNewUrlParser: true }, async (err, db) => {
if (err) throw err;
var dbo = db.db("product");
try{
var results = await dbo.collection("details").find({}).toArray();
results.forEach((product) => {
if(product.id === req.params.id){
// do something you like here.
return true;
db.close();
}
});
}catch(e){
// error
}
});
});

顺便说一句,我想你find了数据库中的所有文档,因为你还需要做其他事情。但是,如果不是,则应该将条件放入查询中,如dbo.collection("details").find({_id: req.params.id})

最新更新