javascript - 从数据库获取后对转换列值进行序列化

标签 javascript node.js sequelize.js

我的 Sequalize 模型中有一个 Date 列“creation_time”。
当我从数据库中获取行时,结果对象包含“creation_time”列作为日期对象。这是预期的行为。
现在,我希望此列显示为日期字符串。我尝试添加 getter 和 setter 方法,其中我使用 JSON.stringify 将日期对象显式设置为字符串,但此列仅作为日期字段出现。此外,尝试将 get() 方法附加到列定义,但仍然没有变化。
我的模型定义是否有帮助:

class MyModel extends Model {
    static associate(models) {
      // define association here
    }
  }
  MyModel.init(
    {
      _id: {
        type: DataTypes.UUID,
        defaultValue: Sequelize.UUIDV4,
        primaryKey: true,
        field: 'id'
      },
    //   creation_time: DataTypes.DATE,
      creation_time: {
        type: DataTypes.DATE,
        get() {
          return JSON.stringify(this.getDataValue('creation_time'));
        }
      }
    },
    {
      sequelize,
      schema: 'dbo',
      modelName: 'my_model',
      tableName: 'my_model',
      getterMethods: {
        creation_time: function () {
          return JSON.stringify(this.getDataValue('creation_time'));
        }
      },
      setterMethods: {
        creation_time: function () {
          return JSON.stringify(this.getDataValue('creation_time'));
        }
      }
    }
  );
当我使用以下查询从数据库中获取时,预计列类型会发生变化:
const myModel = await MyModel.findOne({
    raw: true,
    nest: true,
});

最佳答案

如果您有这样的情况,我认为转换 Sequilize 列类型不是一个好主意,那么您应该将列的类型从 Date 保留为 String。

Also, tried attaching get() method to column definition but still no change.


出于上述目的,您不需要任何 getter 或自定义方法,因为 javascript 已为此目的内置了 toString() 方法,例如
const myModel = await MyModel.findOne({
    raw: true,
    nest: true,
});

let date_in_string = myModel.creation_time.toString(); //it will convert it to string notation
console.log(date_in_string);

关于javascript - 从数据库获取后对转换列值进行序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67969447/

相关文章:

mocha.js - Mocha 茶 Sequelize : I can't make tests fail

join - 使用条件对连接查询进行序列化

javascript - 两种代码的区别——模块

node.js - 异常的 Mongodb 查询

node.js - 从 Redis 检索 Socket.io 客户端

javascript - typescript 中具有动态返回的函数

javascript - 突出显示 Angular2 中嵌套 ngFor 元素的 [class.active]

javascript - FWLSE0013E : Cannot invoke procedure JSONObject cannot be cast to JSONArray

javascript - 如何创建具有 getter 和 setter 方法的 Angular 工厂而不遇到竞争条件

typescript - 如何使用 typescript 正确创建表格