postgresql Sequelize:是否有可能在原始查询中获得虚拟字段的值?

xzv2uavs  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(201)

例如,我有一个模型

const { DataTypes } = require("sequelize");

const User = sequelize.define('user', {
  firstName: DataTypes.TEXT,
  lastName: DataTypes.TEXT,
  presentation: {
    type: DataTypes.VIRTUAL,
    get() {
      return `${this.firstName} ${this.lastName}`;
    },
    set(value) {
      throw new Error('Do not try to set the `fullName` value!');
    }
  }
});

字符串
接下来我想提出一个请求,

let queryText =
      '\
      SELECT \
        user.firstName AS firstName, \
        user.lastName AS lastName \
      FROM \
        user as user'

const items = await sequelize.query(queryText, { type: QueryTypes.SELECT })


是否可以在此类查询中包括字段“presentation”?
这是一个非常简单的例子,在真实的情况下,我有一个更复杂的查询,有很多表的连接,每个表都有自己的虚拟字段
我试过google,试过问chatGPT,试过在现有项目中寻找这样的案例,仔细阅读Sequelize文档

ulmd4ohb

ulmd4ohb1#

VIRTUAL字段在模型定义中声明,因此在使用模型方法(如findAll)的查询中使用,而原始SQL查询用于执行您指定的确切SQL查询并从中获取确切的SQL结果。
如果可以的话,您可以在模型查询中使用原始SQL片段,以便在模型查询中继续使用VIRTUAL字段。
query方法中有instancemodel选项,您可以使用它们将原始SQL查询结果转换为模型示例,尽管我不确定它是否符合您的目标。

相关问题