我可以在迁移脚本中使用序列化模型吗?
Can I use sequelize models in migration scripts
我想在迁移脚本中使用序列化模型。如果可以,能否提供一个例子?由于
我正在创建一个表,帐户,在使用迁移脚本创建它之后,我想遍历所有未关联的用户(老用户)(~还没有帐户),并为这些旧用户创建一个新帐户。为此,我想使用sequelize模型来编写:User.findAll({ include: [Account], where: { Account: null } })
我知道这有点太奇怪了,我可以写一个sequel语句来创建这些帐户,但是……: D
当我尝试要求序列化模型时,迁移总是抛出[SyntaxError: Unexpected token =]
错误。请注意,在脚本创建表(帐户)之后,我只需要模型(帐户)。我在模型文件中没有语法错误,因为否则它会工作,但是当我试图在迁移脚本中使用它时,它不会。
在迁移中使用模型并不是一个好主意,因为模型模式可能比执行迁移时数据库的状态更高级(例如,在以后的迁移中添加的字段),这将导致查询失败。
我建议在迁移中使用queryInterface.sequelize.query
刚刚遇到这个问题,这只是一个需要模型和使用它们的问题。
'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
}
};
相关文章:
- Ajax发布表单序列化,发布引号'
- 序列化数据属性中对象的最可靠方法
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 为什么JSON.stringify没有序列化原型值
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- 是否可以在javascript中反序列化java对象
- jQuery Ajax数组序列化错误
- 对象序列化,JAVA,Javascript
- 在jquery中以序列化的形式传递额外的paparameter
- 如何使用angularjs序列化对象
- 在Ext JS存储中反序列化json数据时区分模型类型
- 如何在不序列化模型的情况下呈现模板数据?
- Java Jackson:反序列化复杂多态对象模型:JsonMappingException:意外令牌(START_OB
- 添加新的列/属性以序列化模型
- 数据模型在控制器中没有得到反序列化
- 我可以在迁移脚本中使用序列化模型吗?
- Backbone.js序列化模型属性以进行同步
- MVC手动序列化复杂的对象或模型绑定
- 如何序列化视图模型并将其推送到 HTML 页面以使用 JSON 结构
- 数据模型'序列化'属性"set"ting未调用的函数