While循环数据库查找



我们已经设计了我们的网站,以便我们可以使用博客的段符来获取其内容,例如www.mysite.com/blog/blog_1

'blog_1'是鼻涕虫(我知道我在侮辱你的智商)。

用这个简单的方法来确定这个弹头:

let slug = blog.title.toLowerCase().split(' ').join('-')

所以像'This is my blog title'这样的东西应该是' thisis -my-blog-title'。

然而,我们不能有重复的鼻涕虫。因此,我试着这样做:

let slug = blog.title.toLowerCase().split(' ').join('-')
let i
do {
slug += i
i++
}
while (await Blog.find({ slug })

然而,它似乎挂了。你能在while循环中使用await吗?我只是想将段鼻涕条名称增加1,直到数据库调用返回null,此时我可以将该段鼻涕条用于博客。

任何想法? !

谢谢!

可以在do..while循环中使用await。例如:

async function test(i) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(i < 10)
}, 1000)
})
}
async function main () {
let i = 0
do {
console.log(i)
i++
} while (await test(i))
}
main()

你应该首先纠正一些小错误,比如let i = 0而不是let i,在你的代码末尾有一个缺失的括号。

如果它仍然不工作,你应该检查你的功能Blog.find()

您可以将for ofawait一起使用

let counter= [0];
let slug;
for( let i of counter){
slug+=i; 
let result = await Blog.find({ slug })
if(result){
counter.push(i+=1)
}
}

最新更新