我想在迁移脚本中使用sequelize模型。有可能,如果是的话,请你提供一个例子吗?感谢
我创建了一个表,帐户,在使用迁移脚本创建后,我想迭代所有未关联的用户(旧用户)(〜还没有帐户)并为这些旧用户创建一个新帐户。为此,我想使用sequelize模型来编写:User.findAll({ include: [Account], where: { Account: null } })
我明白这有点太异国情调了,我可以写一个续集声明来创建这些帐户,但是......:D
当我尝试要求sequelize模型时,迁移始终会引发[SyntaxError: Unexpected token =]
错误。请注意,在脚本创建表(帐户)后,我只需要模型(帐户)。我的模型文件中没有语法错误,因为否则它会起作用,但是当我尝试在迁移脚本中使用它时,它并没有。
答案 0 :(得分:0)
只是遇到了这个问题,只需要模型并使用它们即可。
'use strict';
const { User, Account } = require('../models'); // Assuming migrations is next to models
module.exports = {
up: async (queryInterface, Sequelize) => {
// Make the database migrations
await queryInterface.createTable('Accounts', .......)
await queryInterface.addColumn('Users', 'AccountId', {
type: Sequelize.INTEGER,
references: { model: 'Accounts', key: 'id' }
// ... more stuff here
})
// Fill up data
const usersWithoutAccounts = await User.findAll({ where: {AccountId: null}})
await Promise.all(usersWithoutAccounts.map(async user => {
const account = await Account.create({ props })
await user.update({ AccountId: account.id })
}))
},
down: async (queryInterface, Sequelize) => {
// ... undo changes
}
};
答案 1 :(得分:0)
在迁移中使用模型不是一个好主意,因为模型架构可能比执行迁移时数据库的状态(例如,在以后迁移中添加的字段)更高级,这将导致查询失败。
我建议在迁移中使用 queryInterface.sequelize.query
。