mysql - 在 Sequelize with Dates 中使用 Op.between 时出现 TypeScript 错误
问题描述
我想查找在某个日期范围内创建的 MySql 表中的所有记录。
所以我写道:
import { Sequelize, Model, DataTypes, Op } from 'sequelize';
const sequelize = new Sequelize({
// some db connection config
dialect: 'mysql'
})
class Patient extends Model {
public guid!: number;
public name!: string;
public recordState: number = 0;
public createdAt?: Date;
public updatedAt?: Date
}
Patient.init({
guid: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false
},
name: { type: DataTypes.STRING, allowNull: false },
recordState: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
createdAt: DataTypes.DATE,
updatedAt: DataTypes.DATE
}, {
sequelize,
modelName: 'Patient',
timestamps: false
})
Patient.findAll({
where: {
createdAt: {
[Op.between]: [new Date('2020-02-02'), new Date()]
}
}
})
但是,当我尝试用 编译它时tsc
,它会报告如下错误:
sequelize.ts:50:5 - error TS2322: Type '{ [between]: Date[]; }' is not assignable to type 'string | number | boolean | WhereAttributeHash | AndOperator | OrOperator | Literal | Where | Fn | Col | WhereOperators | Buffer | WhereGeometryOptions | (string | ... 2 more ... | Buffer)[]'.
Types of property '[Op.between]' are incompatible.
Type 'Date[]' is not assignable to type 'string | number | boolean | [number, number] | WhereAttributeHash | AndOperator | OrOperator | Literal | Where | ... 5 more ... | (string | ... 2 more ... | Buffer)[]'.
Type 'Date[]' is not assignable to type '(string | number | WhereAttributeHash | Buffer)[]'.
Type 'Date' is not assignable to type 'string | number | WhereAttributeHash | Buffer'.
Type 'Date' is not assignable to type 'WhereAttributeHash'.
Index signature is missing in type 'Date'.
50 createdAt: {
~~~~~~~~~
Found 1 error.
看来我不能Op.between
与日期范围一起使用?但是当我在JS中编写类似的代码时就可以了。
所以我想知道我的 TS 代码是否真的有问题,或者只是类型定义中缺少,或者Op.between
不建议使用 with dates?
解决方案
您传递的是日期对象而不是字符串。做这个:
Patient.findAll({
where: {
createdAt: {
[Op.between]: [new Date('2020-02-02').toISOString(), new Date().toISOString()]
}
}
})
推荐阅读
- php - 同一张表中的 Laravel 模型关系
- sql - 将 SQL Server 查询值分配给 shell 脚本中的变量
- php - 如何在php中专门向数组中的每个项目添加数据
- sql - Oracle group by 和 OR 查询优化
- node.js - Discord.js如何从客户端搜索频道
- npm - npm publish 获得的包名与现有包太相似
- python-3.x - Python数据框 - 如何跟踪最近的最低值
- c# - AMP 页面未在我的开发站点中重定向 [非 Wordpress]
- flask - How to insert an element into list at index in jinja2
- javascript - 使用 axios 请求从服务器填充表单数据