Sequelize 默认方法 findOne bug
Posted
技术标签:
【中文标题】Sequelize 默认方法 findOne bug【英文标题】:Sequelize default method findOne bug 【发布时间】:2021-03-18 14:40:45 【问题描述】:Obs.:我正在使用 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';
【问题讨论】:
【参考方案1】:默认情况下,Sequelize 会将 createdAt 和 updatedAt 属性添加到您的模型中,这样您就可以知道数据库条目何时进入数据库以及上次更新的时间。如果您不想要这些字段,可以将timestamps: false
传递给配置。
文档链接:https://sequelize.org/v5/manual/models-definition.html#timestamps
【讨论】:
是的,我知道。但是有“id”字段,我不想要它以上是关于Sequelize 默认方法 findOne bug的主要内容,如果未能解决你的问题,请参考以下文章
Sequelize - findOne().success() 未定义
[usedIf在数据库中时,sequelize findOne找不到用户标识
将属性添加到 Sequelize FindOne 返回的对象