Deno使用Cotton ORM运行时出现Column 'role_id' must have a type错误如何解决?
报错触发原因
- 你使用的cotton@v0.7.5版本ORM的
@Column装饰器无法获取TypeScript编译后丢失的类型信息,必须手动为非主键字段显式指定数据库类型,你当前代码里的role_id、permission_id字段的@Column装饰器均未传入类型参数,因此触发校验报错。 - 部分旧课程的示例代码可能基于非官方修改版的cotton包编写,因此直接运行官方原版依赖的代码会出现该兼容性问题。
修复方法
- 修改
role-permission.ts模型文件的代码,为两个普通字段的@Column装饰器补充type参数,数字类型的字段对应设置为int即可:
import {Model, Primary, Column} from "https://deno.land/x/cotton@v0.7.5/mod.ts"; @Model('role_permissions') export class RolePermission { @Primary() id!: number; @Column({ type: 'int' }) role_id!: number; @Column({ type: 'int' }) permission_id!: number; }
- 保存文件后重新执行启动命令即可正常运行:
deno run --allow-net --unstable app.ts
如果后续其他模型也出现同类报错,统一给对应字段的@Column装饰器添加对应类型参数即可,常用类型对应关系:字符串用varchar/text,布尔值用boolean,时间类型用datetime。
内容的提问来源于stack exchange,提问作者towzie_tyke
相关产品推荐
相关产品推荐

