model 模型
2025/4/16小于 1 分钟
model 模型
说明
递归生成复杂对象的时候所需要,非必传,但是 Array 和 Object 需要传入 model
案例
数组模型
模型
class TestItem extends ModelBase {
@Column()
public userMsg?: number
}
class Test extends ModelBase {
@Column({
model: () => TestItem,
default: () => [],
})
public modelArray?: TestItem[]
@Column({})
public noModelArray?: TestItem[]
}
实例初始化
const test = new Test({
model_array: [{ user_msg: 1 }],
no_model_array: [{ user_msg: 111 }],
})
打印日志
// 传入了model,数组字段会下划线转驼峰
console.log(test.modelArray)
// [{ userMsg: 1 }]
// 未传入model,数组字段下划线不会转驼峰
console.log(test.noModelArray)
// [{ user_msg: 111 }]
对象模型
模型
class TestItem1 extends ModelBase {
@Column()
public userMsg1?: number
}
class TestItem2 extends ModelBase {
@Column()
public userMsg2?: number
}
class Test extends ModelBase {
@Column({
model: () => TestItem1,
autowired: true,
})
public modelObject?: TestItem1
@Column({
model: () => TestItem1,
})
public noModelObject1?: TestItem1
@Column({
model: () => TestItem2,
autowired: true,
})
public noModelObject2?: TestItem2
}
实例初始化
const test = new Test({
model_object: { user_msg1: 123 },
no_model_object1: { user_msg1: 111 },
no_model_object2: { user_msg2: 222 },
})
打印日志
// 传入了model,对象字段会下划线转驼峰
console.log(test.modelObject)
// { userMsg1: 123 }
// 未传入model,但嵌套的内层类型在外层类型上面定义的,对象字段下划线也会转驼峰
console.log(test.noModelObject1)
// { userMsg1: 111 }
// 未传入model,且嵌套的内层类型在外层类型下面定义的,对象字段下划线不会转驼峰
console.log(test.noModelObject2)
// { user_msg2: 222 }
未传 model
模型
class TestItem extends ModelBase {
@Column()
public userMsg!: any
}
class Test extends ModelBase {
@Column({})
public noModelArr!: TestItem[]
}
实例初始化
const test = new Test({
no_model_arr: [{ user_msg: 'arr' }],
})
打印日志
console.log(test.noModelArr)
// [{ user_msg: 'arr' }]
// 未传入model,不可以调用ModelBase原型的所有方法
console.log(test.noModelArr[0].userMsg?.getChangeData())
// undefined
注意事项
- 普通类型无需传入
model
,只有 Array 和 Object 需要传入model
- 若没有传入
model
字段- 不可以调用 ModelBase 原型的所有方法
- 对于 Array 来说,字段为下划线命名
- 对于 Object 来说
- 如果内层类型在外层类型上面定义,会转换为驼峰命名
- 若在下面定义,则为下划线命名