mongodb - Typegoose - ObjectId som refererar till ett subdokument
Jag försöker hämta en ref från ett underdokument. Dokumentet ser ut så här.
Exempel på kategoridokument:
{
"_id": 12345
"keyword": "smart phones",
"subCategories": [
{
"_id": 6789,
"keyword": "apple"
},
{
"_id": 101123,
"keyword": "samsung"
}
]
}
Exempel på ordboksdokument:
{
"_id": 12345
"keyword": "iPhone",
"category": 12345,
"subCategory": 6789
}
Här är vad jag har försökt göra på Typegoose-modelldefinitionen:
För Dictionary (lägg märke till subCategory egenskapen, jag är inte säker på om det är rätt sätt att referera till ett subdokument):
export class Dictionary extends Typegoose {
_id!: Schema.Types.ObjectId;
@prop({
default: 1
})
type!: IDictionaryInput['type'];
@prop()
mainKeyword!: string;
@arrayProp({ items: Synonym })
synonyms!: Synonym[];
@prop({ ref: Category })
category!: Ref<Category>;
@prop({ ref: CategoryModel.subCategories })
subCategory!: Ref<Subcategory>;
@prop({
default: true
})
status!: IDictionaryInput['status'];
}
För kategorier:
export class Category extends Typegoose {
_id!: Schema.Types.ObjectId;
@prop()
keyword!: ICategoryInput['keyword'];
@prop({
default: 1
})
type!: ICategoryInput['type'];
@arrayProp({ items: Subcategory })
subCategories!: Subcategory[];
@prop({
default: true
})
status!: ICategoryInput['status'];
@prop()
insertTimestamp!: ICategoryInput['insertTimestamp'];
}
Sedan försökte jag att populate referenserna genom att göra:
DictionaryModel.findOne({ _id: id })
.populate({
path: 'category',
model: CategoryModel
})
.populate({
path: 'subCategory',
model: CategoryModel.subCategories
});
Jag kan framgångsrikt fylla i ref från category men inte på subCategory.