javascript - Sequelize options.nest in query() 方法不起作用

标签 javascript node.js postgresql sequelize.js

我有一个像这样的原始查询

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/

相关文章:

javascript - 纯JS跨源iframe内的视差效果?

javascript - 如何仅使用 jquery 将行传递到其他表?

javascript - 如何改变对象的结构

node.js - 使用 Node 和 Redis 获取 10 个随机项目

node.js - Sam 构建失败,代码为 : Build Failed Error: NodejsNpmBuilder:NpmPack - NPM Failed: npm ERR! Z_DATA_ERROR

python - Postgresql 触发器检查哪些列的值发生了变化?

javascript - AngularJs 和 Angular-UI-Router 路由权限

javascript - 排序函数正在更改我未排序的变量

java - 函数结果 AS 类字段值

node.js - 自定义 docker 图像未运行 postgres