我知道关于同一错误的讨论有很多问题,并且我看到了大多数问题,但是这些问题并没有解决我的问题。 我写了这段代码:
const userOrganizationGroups = (organizationGroupsList) => {
if (Array.isArray(organizationGroupsList) && organizationGroupsList.length) {
const result = organizationGroupsList.map(async (element) => {
const { organizationId, groupId } = element;
const { Organizations, Groups } = models;
const organization = await Organizations.findOne(
{ _id: organizationId },
{ name: 1, _id: 0 },
);
const group = await Groups.findOne({ _id: groupId });
return Object.assign({}, {
organizationName: organization.name,
group: group.name,
});
});
return result;
}
};
当我调试代码时:
console.log('userOrganizationGroups : ',userOrganizationGroups(list))
我得到了这样的结果:
userOrganizationGroups: Promise { <pending> }
我发现了一个类似的问题:Promise { } - Trying to await for .map,我使用了问题中提到的解决方案:
const userOrganizationGroups = async (organizationGroupsList) => {
if (Array.isArray(organizationGroupsList) && organizationGroupsList.length) {
const result = await Promise.all(organizationGroupsList.map(async (element) => {
const { organizationId, groupId } = element;
const { Organizations, Groups } = models;
const organization = await Organizations.findOne(
{ _id: organizationId },
{ name: 1, _id: 0 },
);
const group = await Groups.findOne({ _id: groupId });
return Object.assign({}, {
organizationName: organization.name,
group: group.name,
});
}));
return result;
}
如何解决此问题?
答案 0 :(得分:1)
代替
console.log('userOrganizationGroups : ',userOrganizationGroups(list))
使用
userOrganizationGroups(list).then( groups => console.log('userOrganizationGroups : ', groups)
或
(async () => {
const groups = await userOrganizationGroups(list);
console.log('userOrganizationGroups : ', groups);
})();
答案 1 :(得分:0)
console.log()
是因为您没有等待使用await
或then
。
所以您应该在下面写上而不是
console.log('userOrganizationGroups : ',userOrganizationGroups(list))
;(async () => {
const resultGroups = await userOrganizationGroups(list)
resultGroups.forEach(group => {
console.log(`group: ${JSON.stringfy(group, null, ' ')}`)
})
})()