如何使用 sequelize-typescript 从源实例创建关联实例
Posted
技术标签:
【中文标题】如何使用 sequelize-typescript 从源实例创建关联实例【英文标题】:how to create association instance from source instance with sequelize-typescript 【发布时间】:2020-02-22 15:14:34 【问题描述】:我有 1:n 关联Company -> CompanySettings
,
我想要的是,我通过 Id 找到 Company,然后通过该实例创建 companySettings 并自动填充外键属性
using sequelize-typescript
我已经从关联函数及其作品中尝试了$get
、$add
、$count
但是当我尝试$create
函数时,它给了我错误
公司类
@Table(
tableName: 'company',
)
export class Company extends Model<Company>
@Column( allowNull: false, type: DataType.STRING(50) )
name: string
@CreatedAt
@Column( field: 'created_at' )
createdAt: Date
@UpdatedAt
@Column( field: 'updated_at' )
updatedAt: Date
@Column( field: 'is_deleted', defaultValue: 'f', type: DataType.BOOLEAN )
isDeleted: boolean
@HasMany(() => CompanySettings)
settings: CompanySettings[]
CompanySettings 类
@Table(
tableName: 'company_settings',
)
export class CompanySettings extends Model<CompanySettings>
@ForeignKey(() => Company)
@Column
idCompany: number
@BelongsTo(() => Company)
company: Company
@Column( type: DataType.ENUM('default', 'alwaysApprove', 'alwaysAsking') )
defaultBookingApproval: defaultBookingOptions
@Column( type: DataType.SMALLINT )
budgetPeriod: number
@Column( type: DataType.CHAR(2) )
startDate: string
@CreatedAt
@Column
createdAt: Date
@UpdatedAt
@Column
updatedAt: Date
@Column( defaultValue: 'f', type: DataType.BOOLEAN )
isDeleted: boolean
控制器
const companies = await Company.findOne()
return await companies.$create('settings', startDate: '22' )
找到源实例后,我想创建与源实例相关的新实例
但我得到的错误如下所示
TypeError: this[("create" + string_1.capitalize(...))] is not a function
告诉我我哪里错了?
【问题讨论】:
【参考方案1】:如果你想创建一个设置,你应该编写如下代码
companies.$create('setting', startDate: '22 )
而不是
companies.$create('settings', startDate: '22' )
如果你想创建批量,你应该喜欢下面
companies.$create('settings', [ startDate: '22', startDate: '23'] )
【讨论】:
以上是关于如何使用 sequelize-typescript 从源实例创建关联实例的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Sequelize-Typescript 模型定义指定 NestJs 控制器的返回类型?
sequelize-typescript - 当使用带有 `tsc` 编译器(带有 NestJS)的 glob 配置时,无法解析模型模块
Node.js 和 sequelize-typescript - 数据访问对象和业务对象
sequelize-typescript:模型中get()的通用方法
Sequelize-typescript 'HasManyCreateAssociationMixin' 不是函数
sequelize/sequelize-typescript - 带有 HasMany 的 findAll 返回一个对象而不是数组