如何仅使用顺序迁移而不更改请求来更改列中的值? upsert或其他?
Sequelize CLI [Node:8.11.3,CLI:4.0.0,ORM:5.0.0-beta.5]
已加载的配置文件“ config / database.json”。 使用环境“开发”。 == 2018061713010-changeColumn:正在迁移=======
错误:无法读取未定义的属性'uniqueKeys'
这是什么错误?
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
queryInterface.upsert(
'table',
{
style: 2,
},
{
style: 2,
},
{}, //model
{} // options
);
},
down: (queryInterface, Sequelize) => {
},
};
数据库图片
答案 0 :(得分:2)
似乎我想出了一个解决方案:
'use strict';
const sequelize = require('..yourpath').sequelize;
module.exports = {
up: (queryInterface, Sequelize) => {
queryInterface.upsert(
'table',
{
style: 2,
},
{
style: 2,
},
sequelize.define('your Model', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
{} // options
);
},
您必须创建一个临时模型,也可以只使用快捷方式,然后在任何地方存储模型。希望这可以帮助!为我工作。
答案 1 :(得分:0)
我也在努力解决同样的问题。 这与您使用的方法相同。
万一有人碰到这个,这是我使用的代码。
const tableName = 'some_config_table';
module.exports = {
up: (queryInterface, Sequelize) => {
const { sequelize } = queryInterface;
const model = sequelize.define(tableName, {
key: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
value: Sequelize.STRING,
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
return queryInterface.upsert(
tableName,
{
key: 'my_config_key',
value: 1,
createdAt: new Date(),
updatedAt: new Date(),
},
{
value: 1,
},
{
key: 'my_config_key',
},
model,
{},
);
},
down: (queryInterface, Sequelize) => {
const { sequelize } = queryInterface;
const model = sequelize.define(tableName, {
key: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
value: Sequelize.STRING,
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
return queryInterface.upsert(
tableName,
{
key: 'my_config_key',
value: 10,
createdAt: new Date(),
updatedAt: new Date(),
},
{
value: 10,
},
{
key: 'my_config_key',
},
model,
{},
);
},
};