使用typegoose/mongoose,我可以获得这样一个类的模型(其中Clip是一些将保存到db的类)
import { getModelForClass } from '@typegoose/typegoose';
...
const ClipModel = getModelForClass(Clip);这个模型是可构造的,我的意思是我可以这样做;
const clip = new ClipModel()
const clip = new ClipModel({someProp: "someValue"})问题
getModelForClass的返回类型,它是ReturnModelType<U, QueryHelpers>,那么一个类型怎么能有一个构造函数呢?难道这不等于做;const clip = new ReturnModelType<Clip, QueryHelpers>(); // Ts error: 'ReturnModelType' only refers to a type, but is being used as a value here.class MyCustomModel extends ClipModel {
// Add some customisations
}但是,这会导致ts错误Base constructors must all have the same return type.。
ClipModel.find({}) // the default created find method
ClipModel.myCustomFind({}) // find method with custom stuff谢谢,
发布于 2021-10-05 13:40:02
是否可以对ClipModel进行扩展,使其具有一些自定义函数,以便可以像这样进行调用;
你要搜索的是静态方法
如果可以构造ClipModel,这是否意味着ClipModel是一个类?如果是的话,应该可以这样做吗?
ClipModel (运行时从getModelForClass返回的内容)是mongoose.Model的一个实例,而在JS中,实例不能从
这怎么可能。如果我看一下getModelForClass的返回类型,这里是ReturnModelType,那么一个类型怎么能有一个构造函数呢?难道这不等于做;
您可以在有关ReturnModelType的文档中阅读更多内容。
此外,您的示例很奇怪,不能在运行时使用类型,正确的是:
type TCustomModel = ReturnModelType<typeof Class>;
// and if you have QueryHelpers for the Class
type TCustomModel = ReturnModelType<typeof Class, ClassQueryHelpers>
// and then later
const CustomModel: TCustomModel = getModelForClass(Class);
// or (pseudo code, may need more more types in ".model<>")
const CustomModel: TCustomModel = mongoose.model('Name', schema);阅读有关QueryHelpers在@queryMethod中的更多信息
https://stackoverflow.com/questions/69444715
复制相似问题