gpt4 book ai didi

javascript - 什么时候是数据库插入的关键部分?

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:35 24 4
gpt4 key购买 nike

这是我使用sequelize插入数据库的代码。

insertUser: function() { 
User.build({
firstName: 'John'
}).save().then(newUser => {
const race = Race.build({
name: 'Spa'
});
race.setUser(newUser);
race.save();
});
}

我仍然不熟悉异步/同步 javascript 关键部分。在这里,我在插入用户后使用 Promise,这样我就能够获取他的 id,从而能够使用他的属性创建一个竞赛。之后,我在保存之前从竞赛中构建并设置外键。

我的问题是:我应该在race.save()之前放置一个新的Promise,以等待外键属性在保存之前设置完毕,并避免在没有外键的情况下保存可能的竞赛?或者这里是 .then( 上的所有内容,将连续运行?为什么?

谢谢:)

最佳答案

让我们使用您的代码来解决问题:

User.build({
firstName: 'John'
}).save().then(newUser => {
const race = Race.build({
name: 'Spa'
});
console.log("2");
race.setUser(newUser);
console.log("3")
race.save().then(race => {
console.log("5");
});
console.log("4");
});
console.log("1")

每当您执行异步操作(例如访问数据库)时, Node 都会继续执行,而不是等待操作完成(阻止),以免浪费可用于执行其他操作的周期。在上面的示例中,我们有多个 save() 调用。在我们到达第二个 console.log 之前,我们进行了保存,这意味着 Node 将继续并在最底部记录第一条消息。 save() 调用完成后,它会继续执行 then() block 。由于 setUser 不是异步的,因此它将设置用户,然后打印 3。当我们再次调用 save 时,我们将再次访问数据库,并在继续打印 5 之前打印 4。

关于javascript - 什么时候是数据库插入的关键部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48573670/

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