node.js - 等待不适用于 Sequelize 中的 QueryInterface.insert
问题描述
我正在尝试检查用户是否存在,否则插入用户并为对象分配用户 ID。
但似乎在执行所有选择查询之后执行插入,它不等待执行插入查询并返回用户结果。
基本上选择查询,插入查询,因为它在 foreach 循环中运行,所以一个接一个地按顺序运行。
const { QueryTypes } = require("sequelize");
module.exports = {
up: async (queryInterface, Sequelize) => {
const flightsList = require("../../storage-files/flights.json");
const list = [];
flightsList.forEach(async element => {
const obj = { email: element.email };
// Check Query
const userList = await queryInterface.sequelize.query(
"SELECT * FROM user where name = ?",
{
replacements: [element.name],
type: QueryTypes.SELECT
}
);
if (userList.length) {
obj.user_id = userList[0].id;
} else {
const [id] = await queryInterface.insert(null, "user", {
name: element.name,
createdAt: new Date(),
updatedAt: new Date()
});
obj.user_id = id;
}
list.push(obj);
});
await queryInterface.bulkInsert("flights", list, {});
}
};
解决方案
推荐阅读
- javascript - vue:this在不同的范围内得到相同的对象
- python-3.x - 我们如何添加具有相同 id 的数据框?
- java - 无法在 puTTY 中使用 Java 找到或加载主类
- python - 从服务器检索大量数据时 Python 崩溃
- java - 我的代码有什么问题吗?为什么压缩和解压缩速度比其他应用程序慢?
- java - 稳定的婚姻问题 - 代码不返回任何人的合作伙伴/选择
- solr - Solr 8.0.0 增量导入问题
- azure - 如何在 B2C 中设置密码重置用户流程以避免非广告用户的电子邮件地址
- javascript - 从最小日期开始添加一个月的填充
- android - 将应用程序上传到播放控制台时出错 - “上传失败 Android App Bundle 未签名。”