首页 > 解决方案 > Sequelize默认方法findOne bug

问题描述

观察:我正在使用 Sequelize 最新版本、迁移、控制器和模型

我有这个模型叫做Tokens

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Tokens = sequelize.define('Tokens', {
    usuarios_id: {
      type: DataTypes.INTEGER,
      allowNull: false
    },
    token: {
      type: DataTypes.STRING,
      unique: true
    },
    empresa_id: {
      type: DataTypes.INTEGER,
      allowNull: false
    }
  }, {
    paranoid: false,
    freezeTableName: true
  });
  Tokens.associate = function(models) {
    // associations can be defined here
  };
  return Tokens;
};

我在中间件中调用 findOne() 方法,如下所示:

const token = await Tokens.findOne({ where: { token: tokenHeader }})

日志记录返回我拥有的更多字段,但我将它们从模型和迁移中删除:

Executing (default): SELECT "id", "usuarios_id", "token", "empresa_id", "createdAt", "updatedAt" FROM "Tokens" AS "Tokens" WHERE "Tokens"."token" = '900150983cd24fb0d6963f7d28e17f72';

标签: node.jsormsequelize.jsbackend

解决方案


默认情况下,Sequelize 会将 createdAt 和 updatedAt 属性添加到您的模型中,这样您就可以知道数据库条目何时进入数据库以及上次更新的时间。如果您不想要这些字段,则可以传递timestamps: false给配置。

文档链接:https ://sequelize.org/v5/manual/models-definition.html#timestamps


推荐阅读