Javascript Sequelize findOne/findAll查询不返回关联属性

Javascript Sequelize findOne/findAll查询不返回关联属性,javascript,node.js,postgresql,sequelize.js,Javascript,Node.js,Postgresql,Sequelize.js,我正在尝试使用Sequelize获取一个基本的关联/联接查询,但似乎无法获取从包含关联返回的数据。到目前为止,我已经尝试了多种方法,但都无济于事,但目前正在使用以下方法(简化为演示): //package.json { ... “依赖项”:{ “pg”:“^7.18.1”, “pg hstore”:“^2.3.3”, “续集”:“^5.21.4” } } //sequelize.js const Sequelize=require('Sequelize') 常量选项={ ... databas

我正在尝试使用Sequelize获取一个基本的关联/联接查询,但似乎无法获取从包含关联返回的数据。到目前为止,我已经尝试了多种方法,但都无济于事,但目前正在使用以下方法(简化为演示):

//package.json
{
...
“依赖项”:{
“pg”:“^7.18.1”,
“pg hstore”:“^2.3.3”,
“续集”:“^5.21.4”
}
}
//sequelize.js
const Sequelize=require('Sequelize')
常量选项={
...
databaseVersion:'8.0.2',//红移Postgres版本
方言:“postgres”,
选择:{
ssl:{
要求:对,
拒绝:对
}
}
定义:{
时间戳:false,
冻结表名称:true
}
}
const sequelize=新的sequelize(、选项)
module.exports=sequelize
//modelA.model.js
const{DataTypes}=require('sequelize')
const sequelize=require(“./sequelize”)
const schema='my_schema'
const tableName='my_table_a'
常量modelName='ModelA'
常量属性={
型号a键:{
类型:DataTypes.CHAR(32)
},
模型值:{
类型:DataTypes.STRING
}
型号b_键:{
类型:DataTypes.CHAR(32)
},
}
常量选项={
模式
对应表名
}
sequelize.define(模型名、属性、选项)
//modelB.model.js
const{DataTypes}=require('sequelize')
const sequelize=require(“./sequelize”)
const schema='my_schema'
const tableName='my_table_b'
常量modelName='ModelB'
常量属性={
型号b_键:{
类型:DataTypes.CHAR(32)
},
模型b_值:{
类型:DataTypes.STRING
}
}
常量选项={
模式
对应表名
}
sequelize.define(模型名、属性、选项)
//associations.js
const{models}=require('./sequelize.js')
belongsTo(models.ModelB,{foreignKey:'model_b_key'})
//我暂时忽略了这一点,因为我甚至不能正确地利用上面的关联。。。
//belongsTo(models.ModelA,{foreignKey:'model_b_key'})
按照sequelize、models和associations的顺序加载上述文件。在我看到的Sequelize示例之后,我尝试通过以下查询访问ModelA及其关联ModelB的数据:

//尝试#1
等待sequelize.models.ModelA.findOne({include:['ModelB']})
//返回的数据={model_a_key,model_a_value,model_b_key};缺少所有ModelB列
//尝试#2
等待sequelize.models.ModelA.findOne({attributes:['ModelB.model\u b_value'],include:['ModelB']})
//返回的数据={}
//尝试#3
等待sequelize.models.ModelA.findOne({include:[{association:'ModelB',required:true}]})
//返回的数据={model_a_key,model_a_value,model_b_key};缺少所有ModelB列
//尝试#4
等待sequelize.models.ModelA.findOne({include:[{association:'ModelB',attributes:['model_b_值']}]))
//返回的数据={model_a_key,model_a_value,model_b_key};缺少模型_b_值
生成的SQL似乎在实际获取感兴趣的列方面得到验证,例如,尝试#1产生:

选择“ModelA”。“model_a_key”,“ModelA”。“model_a_value”,“ModelA”。“model_b_key”,“ModelB”。“model_b_key”作为“ModelB.model_b_key”,“ModelB”。“model_b_value”作为“ModelB.model_b_value”
从“my_schema”,“my_table_a”作为“ModelA”
左侧外部联接“my_schema”。“my_table_b”作为“ModelA”上的“ModelB”。“model_b_key”=“ModelB”。“model_b_key”
限值1;
如果我设置选项
raw:true
,这些值也可用。但是,如果我尝试使用model对象,则有关关联ModelB的所有信息似乎都会丢失/丢弃,
ModelB
的嵌套对象和
ModelB.model\u\u key
ModelB.model\u\u值
都不存在于返回的对象上

我是不是错过了一些非常简单的东西?一直在拼命地摆弄关联
targetKey
sourceKey
foreignKey
值,以及更多类似上面列出的findOne/findAll查询排列,但运气不佳

任何建议都将不胜感激

更新I

在进行了更多的修改之后,在建立关联时,似乎出现了一些区分大小写的奇怪行为。如果我将别名
的关联定义为:“modelb”
,并通过
关联:“modelb”
进行查询,则上述fetch语句将按预期工作,并将所需的modelb属性映射到返回的对象上。在别名中引入任何大写字符似乎都会破坏此功能-例如,将别名设置为
xxxxxx
效果良好,
xxxxxx
会导致上述原始问题

最直接的解决办法似乎是将所有内容都仅用小写字母进行别名,但我仍然希望按照预期工作。我希望这只是与Postgres和我的Sequelize配置有关,而不是实际问题

更新II

因此,似乎所有的大写列引用/别名都表示为已定义(例如,
选择“ModelB”,“model\u b\u key”表示为“ModelB.model\u b\u key”
)在构造的SQL查询中,
pg
客户端返回的行对象属性返回为小写(例如,
行['ModelB.model\u\u key']
)。因此,字段标签不再与其原始关联标签对齐,并且没有任何数据映射到模型实例

设置Sequelize选项
minifyAlias:true
似乎可以解决这个问题。启用此选项后,列别名在查询中表示为
\u 01
\u 02
等,然后映射回各自的字符串标签,避免了别名被无意中转换为