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

问题描述 投票:0回答:1

我正在尝试使用Typescript将我的模型与mongoose模式绑定。除非我在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不会把它当作mongoose数组类型。)

用这个抓住我好几个小时,任何帮助都会非常感激。

node.js typescript mongoose
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.