0
我在我的項目中使用了與mysql的sequelize。當前的用例是關於使用一些默認角色填充'roles_master'的表。續集 - 無法讀取未定義的屬性catch
功能createDefaultRoles實現檢查:
- 如果在表
- 如果是行和力量是真實的,刪除現有行並插入新行
- 如果表爲空,直接插入新行
我的代碼如下...
/**
* Creates a pre-defined set of roles
* If roles table exists and already contains data,
* this function simply returns, without creating any roles.
* The list of roles is defined in the file "ecp_db_defaults.js"
*
* @param force -- boolean flag to indicate whether to drop existng roles and recreate afresh
**/
function createDefaultRoles(force, callback) {
console.log("Executing createDefaultRoles...");
db.Role.count().then(function(result) {
if (result>0) {
if (force) {
console.log("Emptying the roles table...");
db.Role.destroy({force:true, where: {}}).then(function() {
db.Role.bulkCreate(dbConfig.roles).done(function() {
console.log("1. Successfully created user roles.");
if (callback) return callback(null); else return;
}).catch(function(e){
console.log("Error while creating roles...", e);
if (callback) return callback(e);
});
}).catch(function(e) {
console.error("Error while destroying roles table.", e);
return (callback)?callback(e):e;
});
}
//if (callback) return callback(null); else return;
} else {
db.Role.bulkCreate(dbConfig.roles).done(function(){
console.log("2. Successfully created user roles.");
if (callback) return callback(null);
})
}
}).catch(function(e){
console.error("Error while querying roles table.", e);
if (callback) return callback(e);
});
}
問題是,它部分工作。雖然,它能夠刪除現有行和添加新的,它也拋出一個捕獲並如下印刷例外..
- 執行createDefaultRoles ...
- 清空角色表... 銷燬角色表時出錯。 [TypeError:無法讀取屬性'catch'of undefined]
-
- 成功創建用戶角色。
最後,函數失敗,因爲上述錯誤的。我試着正確匹配所有.then()和.catch()promise。他們似乎很好。
任何幫助解決這個問題,高度讚賞。