gpt4 book ai didi

node.js - Sequelize.js 保存()结果

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:36 24 4
gpt4 key购买 nike

代码如下:

(function () {
var tag = models.Tag.build({ create_time: new Date(), is_hot: '0', is_lock: '0', name: 'Nodejs' });
tag.save();
console.log(tag.dataValues);
tag.name = "npm";
tag.save();
console.log(tag.dataValues);
tag = models.Tag.build({ create_time: new Date(), is_hot: '0', is_lock: '0', name: 'webpack' });
tag.save();
console.log(tag.dataValues);
})();

结果是: the result

在我的第一眼里,结果可能是:

Executing (default): INSERT INTO `t_tag` (`id`,`name`,`create_time`,`is_hot`,`is_lock`,`is_delete`) VALUES (NULL,'Nodejs','2016-12-23 03:09:23','0','0','0');
Executing (default): INSERT INTO `t_tag` (`id`,`name`,`create_time`,`is_hot`,`is_lock`,`is_delete`) VALUES (NULL,'npm','2016-12-23 03:09:23','0','0','0');
Executing (default): INSERT INTO `t_tag` (`id`,`name`,`create_time`,`is_hot`,`is_lock`,`is_delete`) VALUES (NULL,'webpack','2016-12-23 03:09:26','0','0','0');

是什么原因造成的?为什么“npm”记录插入时间加倍?

最佳答案

Sequelize 函数异步运行。 save 返回一个 promise,您可以 .then() 关闭它以确保您在 SQL 调用完成后继续执行。由于您没有这样做,因此当您将 tag.name 更改为“npm”时,第一个 save 并未保留,因此“npm”被插入了两次(请注意所有三个 console.log 调用是如何在其他任何事情发生之前执行的——这是您没有正确执行异步的另一个迹象)。修复您的流量控制以使用 promise ,您将不会遇到这个问题。

关于node.js - Sequelize.js 保存()结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41294791/

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