【发布时间】:2021-11-02 09:37:47
【问题描述】:
我正在尝试通过使用嵌套包含从 sequelize 中获取 2 个左外连接。但是,第一个包含中的第二个包含不返回表的数据。
call.hasMany(session,{
as: "sessions"
})
session.belongsTo(call,{
foreignKey: "call_id",
as: "call"
})
session.hasMany(session_extra_data,{
as: "sessionExtraData"
})
session_extra_data.belongsTo(session,{
foreignKey: "session_id",
as: "session"
})
call.findAll({
limit: 5,
include: [{
model: session,
as: "sessions",
indlude:[{
model: session_extra_data,
as: "sessionExtraData",
}],
required: false
}],
}).then(data => {
console.log("DATA", JSON.stringify(data));
})
调用模型
const call = sequelize.define('call', {
id: {
type: Sequelize.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true,
field: 'id'
},
version: {
allowNull: false,
type: Sequelize.BIGINT,
field: 'version'
},
},{
freezeTableName:true,
timestamps: false
});
会话模型
const session = sequelize.define('session', {
id: {
type: Sequelize.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true,
field: 'id'
},
version: {
field: 'version',
type: Sequelize.BIGINT,
allowNull: false,
},
callId : {
field: 'call_id',
type: Sequelize.BIGINT,
allowNull: false
},
},{
freezeTableName:true,
timestamps: false
});
会话额外模型
const session_extra_data = sequelize.define('session_extra_data', {
id: {
type: Sequelize.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true,
field: 'id'
},
version: {
field: 'version',
type: Sequelize.BIGINT,
allowNull: false,
},
tenantId: {
field: 'tenant_id',
type: Sequelize.STRING(255),
allowNull: false,
},
sessionId : {
field: 'session_id',
type: Sequelize.BIGINT,
allowNull: false
},
},{
freezeTableName:true,
timestamps: false
});
我已将所有模型定义放入代码中。 你可以看到并告诉我我做错了什么。
呼叫id的会话表数据中有外键为call_id Session id为session_id的session-extra-data表数据中有外键
【问题讨论】:
-
您能否包括
call、session和session_extra_data模型的sequelize模型定义?as属性有很多别名,如果没有sequelize.define(...)或 'call.init(...)` 定义,很难判断会发生什么...
标签: sequelize.js