You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize TypeScript中findAll()报错:SQLITE_ERROR: no such column: NaN

Sequelize + SQLite调用findAll()出现SQLITE_ERROR: no such column: NaN

问题原因

你的Video模型类中,给多个属性直接设置了默认值(比如videoId: number = 0;、readonly createdAt: Date = new Date();等),sequelize-typescript会将这些类属性的默认值解析为数据库列的默认值配置。但对于createdAt这类由timestamps自动管理的字段,以及未在initialize方法中定义的version属性,这种手动赋值会导致Sequelize生成错误的SQL语句,最终触发no such column: NaN的异常。

修复方案

移除类中所有属性的默认值赋值,仅保留类型声明;自动生成的时间戳字段无需手动赋值;若需要version字段,需在initialize中补充配置。

修改后的Video模型代码

import { Model } from "sequelize-typescript";
import { DataTypes } from "sequelize";
import { DatabaseConnection } from "../app/database/databaseConnection";

export default class Video extends Model {
  // 仅保留类型声明,移除默认值赋值
  videoId!: number;
  name!: string;
  date!: Date;
  title!: string;
  description!: string;
  resolution!: string;

  // 自动生成的时间戳字段,仅声明类型
  readonly createdAt!: Date;
  readonly updatedAt!: Date;
  readonly deletedAt!: Date;
  // 若需要version字段,需在initialize中配置,否则删除该声明
  // version!: number;
}

Video.initialize({
  videoId: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true,
      allowNull: false
  },
  name: {
      type: DataTypes.STRING,
      allowNull: false,
  },
  date: {
      type: DataTypes.DATE,
      allowNull: false,
  },
  title: {
      type: DataTypes.STRING,
      allowNull: false,
  },
  description: {
      type: DataTypes.TEXT,
      allowNull: false,
  },
  resolution: {
      type: DataTypes.STRING,
      allowNull: false,
  },
  // 若需要version字段,添加以下配置
  // version: {
  //     type: DataTypes.INTEGER,
  //     allowNull: false,
  //     defaultValue: 0
  // }
}, {
  timestamps: true,
  sequelize: DatabaseConnection,
  paranoid: true
});

说明

  • 使用!非空断言是为了告诉TypeScript,这些属性会由Sequelize自动初始化,避免类型检查报错。
  • createdAt、updatedAt、deletedAt由timestamps和paranoid配置自动生成,无需手动赋值或在initialize中定义。
  • 如果确实需要version字段,必须在initialize方法中添加对应的列配置,否则不要在类中声明该属性。

内容的提问来源于stack exchange,提问作者Adrian Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:40:03