0
在設置與Sequelize庫的關聯時遇到了一些麻煩。繼續收到SequelizeEagerLoadingError:客戶端未與許可證關聯!Sequizeize協會的問題,
這是我的兩個模型。
'use strict';
module.exports = (sequelize, DataTypes) => {
const License = sequelize.define('License', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
validate: { isUUID: 4 }
},
client_id: {
type: DataTypes.UUID,
validate: { isUUID: 4 }
}
}, {
classMethods: {
associate: function (models) {
License.belongsTo(models.Client, { foriegnKey: 'client_id' });
}
}
});
return License;
};
'use strict';
module.exports = (sequelize, DataTypes) => {
const Client = sequelize.define('Client', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: { type: DataTypes.STRING }
}, {
classMethods: {
associate: function (models) {
Client.hasOne(models.License);
Client.hasMany(models.Event);
Client.hasMany(models.Clips);
}
}
});
return Client;
};
這裏是控制器我已經安裝了,我知道該模型是否正常工作,因爲我與工作的findbyID()函數的測試。
'use strict';
const db = require('../models/index.js');
class Controller {
constructor(router) {
router.get('/:id', (req, res, next) => {
// db.License.findById(req.params.id).then(function(license) {
// res.status(200).json(license);
// }, function(err) {
// res.status(404).json({
// error: 'License does not exist!'
// });
// });
db.License.findAll({
include: [{ model: db.Client }]
})
.then(function(license) {
res.status(200).json(license);
}, function(err) {
console.log(err);
res.status(404).json({
error: 'License does not exist!'
});
});
});
}
}
module.exports = router => new Controller(router);
幫助將是巨大的感覺超級失落。 sequelize.sync()正在運行,不會引發任何錯誤。試圖弄清楚我是否有命名問題,可能是因爲某些事情需要大寫或不是大寫,事實並非如此。
剛剛意識到我有我的模式設置沒有按」的方式t與續集的V4一起工作,所以沒有任何東西可以相互關聯。我正在使用從sequelize cli遷移中看不到的默認格式。 –
你解決了嗎?您正在重新定義模型上的外鍵。首先,你在許可證上執行belongsTo,然後在客戶端上執行一個。 belongsTo在origen模型上創建關鍵字並在目標模型上創建一個關鍵字,除了在belongsTo選項上使用'as'外,因此當您執行include時,sequelize會知道您要引用哪個關鍵字。 – Ellebkey
是的,我發現我應該關閉這個問題。由於用於爲續集V4中的模型定義實例和類方法的新格式,我的任何關聯都沒有建立。而且由於我正在運行遷移來控制我的數據庫和列名,我還必須回去編輯它們以符合sequqlize正在查找的內容。 client_id => ClientId –