我正在使用sequelize js
並開發了一個node js application
,它已部署到生產環境並具有實時數據庫。續集umzug遷移
而在發展模式下,如果我需要alter
的DB
,我用用Sequelize.sync({ force: true })
這樣做,效果不錯。
但現在,開發完成後我想改變一個表並添加一列到它。
我搜索了很多帖子,但沒有得到關於如何運行這些遷移的確切示例。
我試圖使用Umzug
並運行遷移,但它會引發我的錯誤。
這裏是我試過的代碼,
遷移/ barmigration.js:
var Sequelize = require('sequelize');
"use strict";
module.exports = {
up: function(migration, DataTypes) {
return [
migration.addColumn(
'Bars',
'PrinterId',
Sequelize.STRING
),
migration.addColumn(
'Bars',
'PrinterStatus',
Sequelize.STRING
)]
},
down: function(migration, DataTypes) {
return
[
migration.removeColumn('Bars', 'PrinterStatus'),
migration.removeColumn('Bars', 'PrinterId')
]
}
};
這裏是umzug configuration
:
var Umzug = require('umzug');
var sequelize = require('sequelize');
var umzug = new Umzug({
// storage: 'sequelize',
model: 'Bar',
storageOptions: {
sequelize: sequelize,
},
migrations: {
path: './migrations',
pattern: /\.js$/
}
});
// umzug.up().then(function(migrations) {
// console.log('Migration complete!');
// });
umzug.down().then(function(migrations) {
console.log('Migration complete!');
});
當我運行該文件,我在up function
中遇到錯誤,在此位置return migration.addColumn
錯誤:
Unhandled rejection TypeError: Cannot read property 'addColumn' of undefined
因此,參數遷移似乎是undefined
。請幫助我。
日Thnx您的回覆英寸但我得到錯誤,'TypeError:sequelize.getQueryInterface不是一個函數'。我在文件中需要'sequelize'。 – Sravan
'sequelize.getQueryInterface'必須在Sequelize實例上運行,而不是在構造函數本身上運行。你是否在單獨的文件中創建了一個sequelize實例,並且在這個實例中需要它? – piotrbienias
是的,我有一個'sequelize'的實例並導出該實例。 – Sravan