2013-07-17 44 views
16

Chúng tôi đang sử dụng orm sequelize.js và đã xác định một mô hình như vậy:Sequelize: Thay đổi sơ đồ mô hình về sản xuất

module.exports = function(sequelize, DataTypes) { 
    var Source = sequelize.define('Source', { 
     name: { 
      type: DataTypes.STRING, 
      allowNull: false, 
      unique: true 
     } 
    }, { 
     paranoid: true 
    }); 

    return Source; 
}; 

này được triển khai vào sản xuất và đồng bộ hóa cơ sở dữ liệu sử dụng sequelize.sync. Bước tiếp theo, chúng tôi thêm thông số:

module.exports = function(sequelize, DataTypes) { 
    var Source = sequelize.define('Source', { 
     name: { 
      type: DataTypes.STRING, 
      allowNull: false, 
      unique: true 
     }, 
      location: { 
        type: DataTypes.STRING 
      } 
    }, { 
     paranoid: true 
    }); 

    return Source; 
}; 

Tuy nhiên, khi triển khai vào sản xuất sequelize.sync không thêm thông số mới này. Điều này là do sync hiện một:

CREATE TABLE IF NOT EXISTS

Và không thực sự cập nhật các schema nếu bàn tồn tại. Đây là noted in their documentation.

Tùy chọn duy nhất có vẻ là { force: true }, tuy nhiên điều này không phù hợp với cơ sở dữ liệu sản xuất.

Có ai biết cách cập nhật đúng lược đồ khi cần thay đổi không?

Trả lời

18

Bạn muốn thực hiện cuộc di cư Sequelize:

http://docs.sequelizejs.com/manual/tutorial/migrations.html

Những điều này sẽ cho phép bạn chuyển nhà phát triển, dàn dựng, và cơ sở dữ liệu sản xuất giữa các quốc gia được biết đến.

+1

Bạn đã lưu ngày của tôi! –

+0

Tôi có một câu hỏi xung quanh vấn đề này. Tôi có thể sử dụng sequelize-cli để tạo ra một mô hình mới và kịch bản di trú tương ứng của nó bằng cách sử dụng mô hình tiếp theo: tạo ra một mô hình và kịch bản di chuyển, có cách nào tương tự có thể được thực hiện khi thêm các cột hoặc ràng buộc mới. Chúng ta phải viết kịch bản di chuyển cho các tác vụ này một cách thủ công hay không có cách nào để tự động tạo tập lệnh di chuyển. –

+1

đó là vấn đề với phần tiếp theo chúng ta phải viết kịch bản di chuyển bằng tay geez! –

Các vấn đề liên quan