node.js - 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';
解决方案
默认情况下,Sequelize 会将 createdAt 和 updatedAt 属性添加到您的模型中,这样您就可以知道数据库条目何时进入数据库以及上次更新的时间。如果您不想要这些字段,则可以传递timestamps: false
给配置。
文档链接:https ://sequelize.org/v5/manual/models-definition.html#timestamps
推荐阅读
- getstream-io - 固定提要之后的通知提要未显示活动
- python - Python 字典,值键映射
- javascript - 如何通过ajax post请求传递子对象
- java - 在 Spring Boot 中处理数据库
- excel - 将 Excel 文件另存为 .CSV 时未保存所需的日期格式
- vb.net - VB.net过滤访问数据库
- unity3d - 卸载应用程序时注销用户的最佳方法是什么?
- numpy - NumPy:如何使用“有损”变换来变换 ndarray 的形状
- django - Django 选择字段重命名第一个选项
- http - 应该返回什么状态码,如果文件,代表资源不在服务器上