在设置与 sequelize 库的关联时遇到了一些麻烦。不断收到 SequelizeEagerLoadingError:客户端与许可证无关!
这是我的两个模型。
'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;
};
这是我设置的 Controller ,我知道模型工作正常,因为我使用 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);
帮助会很棒的感觉 super 迷路。 sequelize.sync() 正在运行并且没有抛出任何错误。试图弄清楚我是否有命名问题,可能是因为某些东西需要大写或不大写,但事实并非如此。
最佳答案
我在 Sequelize v4+ 中也面临这种错误。我通过一些小的改动修改了我的模型,希望对你有用。
像这样编写许可证模型
'use strict';
module.exports = function (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}
}
});
License.associate = function (models) {
License.belongsTo(models.Client, {foriegnKey: 'client_id'});
};
return License;
};
像这样修改您的客户端,
'use strict';
module.exports = function (sequelize, DataTypes) {
const Client = sequelize.define('Client', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: {type: DataTypes.STRING}
});
Client.associate = function (models) {
Client.hasOne(models.License);
Client.hasMany(models.Event);
Client.hasMany(models.Clips);
};
return Client;
};
关于node.js - Sequelize 关联问题,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46436200/