我在mongodb和 对于mongodb建模,我正在使用 Typegoose 。他们还没有自动填充功能。
我正在使用
并且只想使用自动填充
答案 0 :(得分:0)
autopopulate
装饰器有一个prop
选项,其用法如下:
import { prop, Ref } from '@typegoose/typegoose';
class Person {
@prop()
name: string
}
class User {
@prop({ autopopulate: true, ref: Person })
person: Ref<Person>;
@prop()
password: string;
}
答案 1 :(得分:0)
Typegoose在com.huawei.hms:ads-lite:13.4.28.305
装饰器上有一个autopopulate
选项,就像@Mateja在回答中所说的那样。但是,它本身并不起作用,您首先需要安装auto-populate插件并像这样设置您的实体...
prop
有关更多信息,请检查Typegoose Documentation
答案 2 :(得分:0)
在这里,我们有3个馆藏商店,所有者,文件,口香糖。 以ObjectId作为所有者和文档的引用的商店。但是gumasta的参考在所有者收藏文档中。因此要填充子子文档使用 下面的代码在typegoose中。
const vehicleEntity = await ShopModel.findOne({ "id": id })
.populate({
path: 'owner',
populate: {
path: 'gumasta',
model: 'Gumasta'
}
})
.populate('documents')
.exec();
商店的实际结构是
shops{
id: "string"
name: "string"
address_short: "string",
owner: ObjectId('asddsfsdfsdfs34csd7d') // Reference of owner data in owner collection
,documents: [ObjectId('asddsfsdfsdfs34csd7e'), ObjectId('asddsfsdfsdfs34csd7f')]
}
所有者在下面有数据
owners{
id
shop_id
reg_no
gumasta: ObjectId('sdfsdfsdfs343')
}
答案 3 :(得分:0)
我不得不使用这样的东西:
import { prop, Ref, plugin } from '@typegoose/typegoose';
import mongooseAutoPopulate from 'mongoose-autopopulate';
@plugin(mongooseAutoPopulate as any)
class Person {
@prop()
name: string
}
class User {
@prop({ autopopulate: true, ref: Person })
person: Ref<Person>;
@prop()
password: string;
}
如果我尝试像在文档中一样使用它:
import * as autopopulate from 'mongoose-autopopulate';
@plugin(autopopulate as any)
我收到此错误:
Error: First param to 'schema.plugin()' must be a function, got "object"