首页 > 解决方案 > 等待不适用于 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, {});
    }
};

标签: node.jsasync-awaitsequelize.js

解决方案


推荐阅读