gpt4 book ai didi

javascript - wait 对于 collection.insertMany() 无法正常工作?

转载 作者:行者123 更新时间:2023-12-02 22:41:26 24 4
gpt4 key购买 nike

我尝试使用 collection.insertMany() 在我的集合中插入许多记录,并对其进行了测试,但不幸的是,此测试不是确定性的(有时await有时不起作用)。为什么我这么认为,因为 collection.insertMany('Inserted ten rogues in collection') 有时在 console.log(queryResult) 显示空数组之后显示什么导致我的测试有时失败有时通过。为什么这个 await 有时有效有时无效?

我的测试:

describe('Saving records', () => {
it('Save single record in DB', async () => {
const warrior1 = new Warrior({
name: 'John',
class: 'priest',
age: 21,
weight: 75
});
await warrior1.save();
assert(warrior1.isNew === false);
});
it('Save multiple records in DB', async () => {
const tenRogues = createTenRouges();
await Warrior.collection.insertMany(tenRogues, (err, _docs) => {
if(err) {
console.error(err);
} else {
console.log('Inserted ten rogues in collection');
}
});
const queryResult = await Warrior.find({class: 'rogue'});
console.log(queryResult);
assert(queryResult.length === 10);
});
});

CreateTenRogues 方法:

function createTenRouges() {
const warriors = [];
for (let i = 0; i < 10; i++) {
warriors.push(new Warrior({
name: 'John',
class: 'rogue',
age: 21,
weight: 75
}));
}
return warriors;
}

最佳答案

如果您在 insertMany() 中使用回调调用,该函数将不会返回 Promise ,所以使用 await什么也没做。

假设您想使用async/await通过回调,您可以使用 try/catch阻止进行错误检查,然后 await将正常工作:

try {
await Warrior.collection.insertMany(tenRogues);
console.log('Inserted ten rogues in collection');
} catch (err) {
console.error(err);
}

关于javascript - wait 对于 collection.insertMany() 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58574024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com