mysql播种中的异步等待未运行

时间:2019-05-13 17:51:32

标签: mysql reactjs async-await sequelize.js

我正在尝试播种MySQL数据库。我正在使用Sequelize ORM。在我的models文件夹中的index.js文件中,我具有为每个模型运行realSync()函数的代码,如下所示:

const syncDB = async () => {
await db['Meal'].realSync();
await db['User'].realSync();
}
syncDB();

在我的“餐”文件中,我有以下内容:

const mealSeeds = require("../scripts/mealSeeds");
module.exports = (sequelize, DataTypes) => {
let Meal = sequelize.define("Meal", {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: DataTypes.STRING,
type: DataTypes.STRING,
description: DataTypes.STRING,
photo_URL: DataTypes.STRING,
allergen_dairy: DataTypes.BOOLEAN,
allergen_treenuts: DataTypes.BOOLEAN,
allergen_peanuts: DataTypes.BOOLEAN,
allergen_wheat: DataTypes.BOOLEAN,
allergen_fish: DataTypes.BOOLEAN,
allergen_crustaceanshellfish: DataTypes.BOOLEAN,
allergen_eggs: DataTypes.BOOLEAN,
allergen_soya: DataTypes.BOOLEAN,
date_available: DataTypes.DATE,
time_available: DataTypes.TIME,
quantity: DataTypes.INTEGER,
zipcodes: DataTypes.JSON,
catererId: {
field: "CatererId",
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: 0
}
})
Meal.associate = function (models) {
Meal.belongsTo(models.User, {
foreignKey: "catererId",
targetKey: "id"
})

}
// // Insert the meal seed data
Meal.realSync = async () => {
await Meal.sync()
return await Meal.bulkCreate(mealSeeds,
{ignoreDuplicates: true}
);
};
return Meal;
}

应该在Meal.realSync中使用脚本目录中的mealSeeds.js文件中的数据为Meals表添加种子。 (而且我有一个User.js文件,其中包含用户表字段,并且该用户表具有类似的.realSync()函数。该函数工作得很好,并且用户已植入数据库中。)

在我构建项目时,此功能可以正常工作数周,最近在更改“ Meal”表中的某些字段后,该功能不再起作用。我以前的研究表明,通过在index.js文件中异步调用realSync()函数,它将运行并等待Meal realSync()函数完成,然后再运行User realSync()函数。我不确定为什么它不再运行第一个功能。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

已解决-我发现我的种子数据不包含外键引用。