我们已经设计了我们的网站,以便我们可以使用博客的段符来获取其内容,例如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 of
与await
一起使用
let counter= [0];
let slug;
for( let i of counter){
slug+=i;
let result = await Blog.find({ slug })
if(result){
counter.push(i+=1)
}
}