1 回答
TA贡献1828条经验 获得超3个赞
我得到了带有对象的数组
鉴于该代码,您不应该这样做。init
不过,想必您会在某个时候打电话。
但 item1 和 item 2 未定义。我似乎不明白问题是什么。
当您读取items[0]
将其分配给要导出的对象时,异步函数尚未完成,因此该数组仍然是一个空数组。
您可以item1
用一个getter来替换,该 getter 在您尝试读取该属性时获取当前值,但这可能仍然会导致竞争条件。items[0]
item1
更好的解决方案可能是导出一个承诺,一旦获取完成,该承诺将被评估为对象。
显然,您需要在导出的值上使用then()
or 。await
您不会直接从import
.
const init = async (connection) => {
const items = await connection.collection('collectionName')
.aggregate([{
....
}])
.toArray()
return {
all: items,
item1: items[0],
item2: roles[1], // whatever roles is
}
};
module.exports = init();
和
const promise = require('../data/items');
const { all, item1, item2 } = await promise;
添加回答
举报