使用时
sequelize-typescript npm
当尝试调用 Street.create(obj)
时,我收到错误:
“plainObject”类型的参数不可分配给类型的参数 “可选
”。 输入“普通对象” 类型“Omit ”缺少以下属性:sequelize、destroy、restore、update、 还有 39 个
这是模型:
import { Table, Model, Column, PrimaryKey } from 'sequelize-typescript';
@Table({ timestamps: false, tableName: 'street' })
class Street extends Model<Street> {
@PrimaryKey
@Column
street_id: string;
@Column
location_id: string;
@Column
location_symbol: string;
@Column
street_name: string;
@Column
street_synonym: string;
@Column
street_symbol: string;
@Column
updated: Date;
}
export default Street;
这是电话
Street.create({
location_id: 'string',
location_symbol: 'string',
street_name: 'string',
street_synonym: 'string',
street_id: 'string',
street_symbol: 'string',
updated: new Date(),
});
我猜你正在使用sequelize v6。
只需删除通用的
<Street>
就可以了。你不再需要它了。
import { Table, Model, Column, PrimaryKey } from 'sequelize-typescript';
@Table({ timestamps: false, tableName: 'street' })
class Street extends Model {
@PrimaryKey
@Column
street_id: string;
@Column
location_id: string;
@Column
location_symbol: string;
@Column
street_name: string;
@Column
street_synonym: string;
@Column
street_symbol: string;
@Column
updated: Date;
}
export default Street;
您应该能够创建模型使用的界面
F.x.:
import { Table, Model, Column, PrimaryKey } from 'sequelize-typescript';
interface IStreet {
street_id: string;
location_id: string;
location_symbol: string;
street_name: string;
street_synonym: string;
street_symbol: string;
updated: Date;
}
@Table({ timestamps: false, tableName: 'street' })
class Street extends Model<IStreet> {
@PrimaryKey
@Column
street_id: string;
@Column
location_id: string;
@Column
location_symbol: string;
@Column
street_name: string;
@Column
street_synonym: string;
@Column
street_symbol: string;
@Column
updated: Date;
}
Street.create({
location_id: 'string',
location_symbol: 'string',
street_name: 'string',
street_synonym: 'string',
street_id: 'string',
street_symbol: 'string',
updated: new Date(),
});
第一个答案删除了创建调用的类型安全性,第二个答案添加了重复的类型。这解决了这两个问题
import { PrimaryKey } from 'sequelize-typescript'
@Table({ timestamps: false, tableName: 'street' })
class Street extends Model<
InferAttributes<Street>,
InferCreationAttributes<Street>
> {
@PrimaryKey
@Column
street_id: string
@Column
location_id: string
@Column
location_symbol: string
@Column
street_name: string
@Column
street_synonym: string
@Column
street_symbol: string
@Column
updated: Date
}
export default Street