首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后缀findAll中重命名列

在后缀findAll中重命名列
EN

Stack Overflow用户
提问于 2020-09-29 17:02:17
回答 1查看 643关注 0票数 0

我有以下findAll查询:

代码语言:javascript
复制
let consumQuery = Manager.consumption.findAndCountAll({
        where: query, attributes: ['ml', 'price', 'total', 'consumption_end', 'bar_id', 'sync', 'visit.device_id', 
                                    'visit.person.document','visit.person.person_id','visit.person.name','visit.person.surname',
                                    'keg.product_id','keg.product.sku','keg.product.name'],
        include: [
            {
                model: Manager.visit,
                attributes: [],
                include: [{
                    model: Manager.person,
                    attributes: [],
                    raw: true
                }],
                
            },
            {
                model: Manager.keg,
                attributes: [],
                include: [
                    {
                        model: Manager.product,
                        required: true,
                        attributes: []
                    }
                ]
            }],
            limit: PAGE_LIMIT_SIZE,
            offset: offset,
            raw: true,
        order: [['consumption_start', 'ASC']]
    }).then(({count, rows}) => {

我试图将列keg.product.name重命名为beer。我试过:

代码语言:javascript
复制
...'keg.product_id','keg.product.sku',['keg.product.name','beer']

但我发现了一个错误:

代码语言:javascript
复制
"column \"keg.product.name\" does not exist"

sequelize输出的SQL如下:

sql: `SELECT "consumption"."ml", "consumption"."price", "consumption"."total", "consumption"."consumption_end", "consumption"."bar_id", "consumption"."sync", "visit"."device_id", "visit.person"."document", "visit.person"."person_id", "visit.person"."name", "visit.person"."surname", "keg"."product_id", "keg.product"."sku", "keg.product.name" AS "beer" FROM "public"."consumption" AS "consumption" LEFT OUTER JOIN "public"."visit" AS "visit" ON "consumption"."visit_id" = "visit"."visit_id" LEFT OUTER JOIN "public"."person" AS "visit.person" ON "visit"."person_id" = "visit.person"."person_id" LEFT OUTER JOIN "public"."keg" AS "keg" ON "consumption"."keg_id" = "keg"."keg_id" INNER JOIN "public"."product" AS "keg.product" ON "keg"."product_id" = "keg.product"."product_id" WHERE ("consumption"."bar_id" = '248' AND "consumption"."sync" = 'true' AND "consumption"."consumption_start" >= '2020-02-16 20:03:32.000 -03:00' AND "consumption"."consumption_end" <= '2020-09-17 20:03:32.000 -03:00') ORDER BY "consumption"."consumption_start" ASC LIMIT 500 OFFSET 0;},

结果是"keg.product.name" AS "beer",但我认为应该是这样的:"keg.product"."name" AS "beer"

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-10 00:46:03

要重命名属性,必须使其成为类似于[name_in_db, name_you_want]的数组。

因此,属性值应如下所示

代码语言:javascript
复制
attributes: ['ml', 'price', 'total', 'consumption_end', 'bar_id', 'sync', 'visit.device_id', visit.person.document', 'visit.person.person_id', 'visit.person.name', 'visit.person.surname', keg.product_id', 'keg.product.sku', **['keg.product.name', 'beer']**]

来源:https://sequelize.org/api/v6/class/src/model.js~model#static-method-findAll

要重命名属性,可以传递一个带有两个元素的数组--第一个元素是DB .中属性的名称,第二个元素是您希望属性在返回实例中具有的名称

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64124334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档