我试图通过参考sequelize文档来将sequelize一个映射到多个关联,但我无法找到一个完整的例子来使它工作。
我有一个 ClaimType 模型如下
const Sequelize = require('sequelize');
module.exports = function (sequelize) {
const ClaimType = sequelize.define('claim_type', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: {
type: Sequelize.STRING
}
}, {
timestamps: false,
freezeTableName: true
});
return ClaimType;
};
和 MaxClaimAmount
const Sequelize = require('sequelize');
module.exports = function (sequelize) {
const MaxClaimAmount = sequelize.define('max_claim_amount', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
amount: {
type: Sequelize.DECIMAL
},
year: {
type: Sequelize.INTEGER
}
}, {
timestamps: false,
freezeTableName: true
});
return MaxClaimAmount;
};
最后在 index.js
中const ClaimType = require('./model/claim_type.js')(sequelize);
const MaxClaimAmount = require('./model/max_claim_amount.js')(sequelize);
ClaimType.hasMany(MaxClaimAmount, { as: 'claimAmount' });
sequelize.sync({ force: false }).then(() => {
return sequelize.transaction(function (t) {
return ClaimType.create({
name: 'OPD'
}, { transaction: t }).then(function (claimType) {
// want to know how to associate MaxClaimAmount
});
}).then(function (result) {
sequelize.close();
console.log(result);
}).catch(function (err) {
sequelize.close();
console.log(err);
});
});
ClaimType 对象是从事务的第一部分返回的,我想知道如何实现 ClaimType 和 MaxClaimAmount 之间的关联?
答案 0 :(得分:0)
您在模型中建立关联。
(关联:续集文档中的一对多)
const ClaimType = sequelize.define('claim_type', {/* ... */})
const MaxClaimAmount = sequelize.define('max_claim_type', {/* ... */})
ClaimType.hasMany(MaxClaimAmount, {as: 'MaxClaims'})
这会将属性claim_typeId
或claim_type_id
添加到MaxClaimAmount
(您会在列表中看到该列)。 ClaimType
的实例将获取访问者getMaxClaims
和setMaxClaims
(因此您可以在表格上设置外部ID)
下一步是创建后端路由并使用访问器实例方法设置外键。访问器函数的调用方式如下:(instance1).setMaxClaims(instance2)
从查询中返回实例