Return 已解决的承诺
Return resolved promise
我的 strapi 中有一个函数,我可以在其中映射数据和 运行 另一个查询。
async search(ctx) {
const authors = [
{
id: 1,
name: "author 1"
},
{
id: 2,
name: "author 2"
},
]
authors.map((data, i) => {
var books = this.getBooks(data.id)
console.log(books)
// some stuffs here
})
},
getBooks: async function (authorId) {
return await strapi.query('books').find({ userId: authorId })
}
console.log('books')
显示 Promise { <pending> }
。我对承诺的东西不是很熟悉,但我尝试了类似下面的方法,但我猜这不是正确的方法。它仍在返回相同的未决承诺。
getBooks: async function (authorId) {
const books = await strapi.query('books').find({ userId: authorId })
return Promise.resolve(books)
}
找到这个讨论 here。 map
似乎不适用于承诺。如讨论中所述,我切换到 for
循环,现在可以正常工作了。
async search(ctx) {
const authors = [
{
id: 1,
name: "author 1"
},
{
id: 2,
name: "author 2"
},
]
for (let data of authors) {
const books = await strapi.query('books').find({ userId: data.id })
console.log(books)
// some stuffs here
}
}
我的 strapi 中有一个函数,我可以在其中映射数据和 运行 另一个查询。
async search(ctx) {
const authors = [
{
id: 1,
name: "author 1"
},
{
id: 2,
name: "author 2"
},
]
authors.map((data, i) => {
var books = this.getBooks(data.id)
console.log(books)
// some stuffs here
})
},
getBooks: async function (authorId) {
return await strapi.query('books').find({ userId: authorId })
}
console.log('books')
显示 Promise { <pending> }
。我对承诺的东西不是很熟悉,但我尝试了类似下面的方法,但我猜这不是正确的方法。它仍在返回相同的未决承诺。
getBooks: async function (authorId) {
const books = await strapi.query('books').find({ userId: authorId })
return Promise.resolve(books)
}
找到这个讨论 here。 map
似乎不适用于承诺。如讨论中所述,我切换到 for
循环,现在可以正常工作了。
async search(ctx) {
const authors = [
{
id: 1,
name: "author 1"
},
{
id: 2,
name: "author 2"
},
]
for (let data of authors) {
const books = await strapi.query('books').find({ userId: data.id })
console.log(books)
// some stuffs here
}
}