【发布时间】:2021-11-20 16:33:35
【问题描述】:
我的设置
- 打字稿
- 猫鼬
- Typegoose
我有一个班级时间码
export class Timecode {
constructor(private timestamp: string) {}
getAsMilliseconds(): number {
throw new Error('Not implemented');
}
add(timecode: Timecode): Timecode {
throw new Error('Not implemented');
}
toString(): string {
return this.timestamp;
}
}
还有一个实体剪辑
import { prop } from '@typegoose/typegoose';
export class Clip extends BaseEntity {
@prop({ required: true })
name: string;
@prop({ required: true })
description: string;
@prop({
required: true,
type: Timecode,
})
startTimecode: Timecode;
}
我的问题
只需保存时间戳即可将时间码轻松序列化为字符串,例如00:00:12:34
我希望能够在我的实体上拥有Timecode 属性,然后当我保存到 mongo 时让它们自动序列化为字符串。此外,它们应该在加载时转换回 Timecode 实例。
这是一个例子
const clip = new Clip();
clip.name = "My Clip"
clip.description = "My Dessciption"
clip.startTimecode = new Timecode("00:00:12:34")
const savedClip = await ClipModel.create(clip)
const loadedClip = await ClipModel.findById(savedClip._id)
console.log(loadedClip.startTimecode.getAsMilliseconds()) //should work as startTimecode is an instance of Timecode
所以我希望猫鼬在我保存具有Typecode 类型属性的实体并将其转换为字符串然后在加载时将其反转为Typecode 的实例时注意到。
理想情况下,我可以在一个地方配置它,而不是在我声明Typecode 属性的每个地方。
这可能吗?我该怎么做?
谢谢
【问题讨论】:
标签: node.js typescript mongodb mongoose typegoose