我正在尝试使用Typescript将我的模型与猫鼬模式绑定。除了我在mongoose.Types.DocumentArray <>中使用ObjectId时,一切看起来都不错。
export interface TestModel extends mongoose.Document {
name: string;
sort: mongoose.Types.DocumentArray<mongoose.Schema.Types.ObjectId>;
}
const TestSchema = new mongoose.Schema({
name: String,
sort: [mongoose.Schema.Types.ObjectId]
});
export default mongoose.model<TestModel>('Test', TestSchema);
以下是我看到的错误
类型'ObjectId'不满足约束'MongooseDocument'。
类型“ ObjectId”缺少类型中的以下属性 'MongooseDocument':$ isDefault,$ session,depopulate,equals和24 more.ts(2344)
如果我使用
sort: [mongoose.Schema.Types.ObjectId];
代替
sort: mongoose.Types.DocumentArray<mongoose.Schema.Types.ObjectId>;
在架构方面,一切看起来都不错,但是当对模态结果执行操作时,.pull()之类的方法会遇到猫鼬类型错误(TS不会将其作为猫鼬数组类型。)
为此花了数小时的时间,任何帮助将不胜感激。
答案 0 :(得分:1)
发现了问题。我很愚蠢,这是一个愚蠢的错误,我在类型定义中使用了错误的Type。应该使用mongoose.Types.Array
而不是mongoose.Types.DocumentArray