1
A
回答
1
無法通過使用主sequelize同步跳躍模式,
而是你可以使用模型同步功能,只叫你想要同步
http://docs.sequelizejs.com/en/latest/api/model/#sync-promisethis
0
好的車型同步功能,告訴Keval我需要同步()的車型,所以我複製從sequelize.sync()/粘貼代碼,並改變它:
if (config.sync && config.sync != 'false') {
let models = [];
sequelize.modelManager.forEachModel(function(model) {
if (model && model.options.sync !== false) {
models.push(model);
} else {
// DB should throw an SQL error if referencing inexistant table
}
});
return Sequelize.Promise.each(models, function(model) {
return model.sync(config.sync);
});
}
3
我用很卡的方法當我想創建和使用帶有Sequelize的視圖時,我會回到十字軍的答案。在這種情況下,我不希望Sequelize嘗試同步視圖,因爲它會導致創建表。要做到這一點,我添加以下到Sequelize模式:
var MyView = sequelize.define("MyView", {
status: { type: DataTypes.TEXT },
},
{
doNotSync: true,
tableName: "myDatabaseView", // The actual view name in database
classMethods: {
createView: function(models) {
return sequelize.query("CREATE OR REPLACE VIEW myDatabaseView ...;");
}
});
現在我有設置我需要確保當我創建數據庫的意見,不包含在該createView
方法被調用每個觀點。
var tables = [];
sequelize.modelManager.forEachModel(m => {
if (m.options.doNotSync !== true) {
tables.push(m);
}
});
return Sequelize.Promise.each(tables, t => {
return t.sync({force: true});
}).then(_ => {
var views = [];
sequelize.modelManager.forEachModel(m => {
if (m.options.doNotSync && m.createView) {
views.push(m);
}
});
return Sequelize.Promise.each(views, v => {
return v.createView(sequelize.models);
});
});
此外,爲了安全起見,我添加了鉤子以防止在視圖上使用任何create/update/delete操作。
hooks: {
beforeBulkCreate: throwNotAllowedError,
beforeBulkDestroy: throwNotAllowedError,
beforeBulkUpdate: throwNotAllowedError,
beforeCreate: throwNotAllowedError,
beforeDestroy: throwNotAllowedError,
beforeUpdate: throwNotAllowedError
}
凡throwNotAllowedError
是一個簡單的功能
function throwNotAllowedError() {
throw new Error("Operation not allowed on a view");
}
希望有所幫助。獲得對Sequelize的看法使我們在項目的生產力上獲得了巨大的提升。
而且您仍然可以從視圖中創建關係和關聯,從而允許您使用include:[]
表示法將其他表添加到視圖查詢中。
相關問題
- 1. NSRegularExpression省略某些字符
- 2. SQL查詢省略某些值
- 3. 省略SQL中的某些記錄
- 4. 省略某些職位從環 - WordPress的
- 5. 如何從rspec控制器測試中省略某些東西?
- 6. 如何省略某些字段中包含零的記錄?
- 7. 如何從sublimetext2中省略某些語言?
- 8. 如何忽略模型中的某些變量用於改進
- 9. 如何忽略某些模型的前綴? CakePHP
- 10. 文本溢出:省略號不能使用某些字體?
- 11. 省略XML樹的某些部分,而排序使用XSLT
- 12. 輪胎軌道活動記錄模型省略了一些列
- 13. 如何使Brakeman忽略某些路徑
- 14. 如何禁用某些模板類型
- 15. 哪些詞可以省略?
- 16. 如何省略模塊前綴?
- 17. 如何省略MenuItem?
- 18. SQL查詢省略ssrs的某些日期
- 19. 項目面板的WPF RenderTargetBitmap,但省略了某些元素
- 20. 螢火蟲:省略輸出在某些情況下
- 21. 從隨機數組中省略某些結果PHP
- 22. 將帶矩陣轉換爲幀並省略某些行?
- 23. 爲什麼我們只在某些時候省略括號?
- 24. 省略以某些字符開頭的結果
- 25. 選擇SQL內部連接和省略某些記錄
- 26. 同步兩個MySql表,省略某些列
- 27. SDL TTF在某些字體上沒有顯示省略號
- 28. Rails響應在某些時候被省略
- 29. 的Solr - 省略某些領域被強調
- 30. 創建關聯模型首先忽略某些的PK