来自HSTORE的Sequelize.js虚拟属性

时间:2017-03-31 02:17:20

标签: postgresql sequelize.js hstore

我正在尝试在我的模型中实现HSTORE翻译,有没有办法让它在没有JS getter的情况下工作,如下所示:

module.exports = function (sequelize, DataTypes) {
  return sequelize.define('whatever', {
    title_en: {
      type: DataTypes.STRING,
      field: "title -> 'en'",
    },
  })
})

您期望发生什么?

所以实际的SQL是:

SELECT "id", title -> 'en' AS "title_en" FROM "whatever";

实际发生了什么?

而不是:

SELECT "id", "title -> 'en'" AS "title_en" FROM "whatever";

1 个答案:

答案 0 :(得分:0)

您可以将字段定义为文字:

sequelize.define('whatever', {
  title_en: {
    type: Sequelize.STRING,
    field: Sequelize.literal("title -> 'en'"),
  }
})

哪会产生所需的查询

SELECT `id`, title -> 'en' AS `title_en`, `createdAt`, `updatedAt` FROM `whatevers` AS `whatever` WHERE `whatever`.`id` = 1;