类型'ObjectId'不满足约束'MongooseDocument'

时间:2019-05-01 04:39:48

标签: node.js typescript mongoose

我正在尝试使用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不会将其作为猫鼬数组类型。)

为此花了数小时的时间,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

发现了问题。我很愚蠢,这是一个愚蠢的错误,我在类型定义中使用了错误的Type。应该使用mongoose.Types.Array而不是mongoose.Types.DocumentArray