我有一个像这样的原始查询
squelize.query(
`select "order".id, "orderCustomer".id as "orderCustomer.id", "orderCustomer".forename as "orderCustomer.forename"
from orders as "order"
join customers as "orderCustomer" on "orderCustomer".id = "order"."orderCustomerId"
where "orderCustomer".forename ilike '%petra%';`,
{
type: Sequelize.QueryTypes.SELECT,
model: order,
nest: true,
mapToModel: true
})
当我在 psql
中查询时,我得到了正确的结果集:
-[ RECORD 1 ]----------+------
id | 383
orderCustomer.id | 446
orderCustomer.forename | Petra
-[ RECORD 2 ]----------+------
id | 419
orderCustomer.id | 9
orderCustomer.forename | Petra
问题是,Sequelize 显然无法将其形成这种类型的数组
[
{
id: 383,
orderCustomer: {
id: 446,
forename: 'Petra'
}
},
...
]
相反,我得到的是这样的:
[
{
id: 383,
'orderCustomer.id': 446,
'orderCustomer.forename': 'Petra'
},
...
]
我是否需要在查询的选项对象中包含
客户模型?
更新
我记录了我的查询结果。所有返回的订单实例上都有此属性 _options
:
_options:{
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true, // <--------- possible cause?
attributes: undefined
}
不知何故,我无法在查询定义中将 options.raw
设置为 false
!也许这就是为什么……
…sequelize will not try to format the results of the query, or build an instance of a model from the result (see docs > query() > options.raw)
有什么想法吗?
最佳答案
我正在使用您的解决方案:nest: true 并且效果很好!
[err, rows] = await to(sequelize.query(query,{ replacements: { search: '%'+search+'%', limit: limit, offset: skip}, type: sequelize.QueryTypes.SELECT,nest: true}));
关于javascript - Sequelize options.nest in query() 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971944/