我通过mongoose将nodejs应用程序连接到mongodb
为了某种目的,我需要检查,如果我的数据库中包含一些数据,具有某些特定的标题topic
,我使用find()
方法,逐一遍历数据并与topic
进行比较,最后,如果没有找到数据,则需要返回一些特殊的代码,例如not found
。
但尽管在find()
方法中检查数据,它首先向我展示了not found
代码,请帮助.
我试着console.log()
,检查哪段代码先执行
函数为:
app.get("/posts/:topic", (req, res) => {
const topic = _.lowerCase(req.params.topic);
var found = false;
posts.find().then((result)=>{
result.forEach((element)=>{
if(_.lowerCase(element.postTitle) === topic){
found = true;
console.log("checking in posts..");
res.render("post", {postTitle: element.postTitle, postContent: element.postContent});
}
})
}).catch((err)=>console.log(err));
if(found == false){
console.log("default");
// res.render("post", {postTitle: "Oops!...", postContent: "The post you are searching, does not exists.....try again."});
}
});
它将输出记录为:
default
checking in posts
但它应该首先检查帖子,然后转到结束代码.....并且应该记录为:
检入帖子默认值
1条答案
按热度按时间chy5wohz1#
我发现你在代码中使用了Promise,但似乎你不知道JavaScript中的异步是什么。你应该检查asynchronous。在这段代码中,我建议你可以这样写: