首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有子文档数组的Typegoose ref

带有子文档数组的Typegoose ref
EN

Stack Overflow用户
提问于 2020-11-26 19:34:43
回答 1查看 1.1K关注 0票数 0

我正在尝试使用Typegoose获取嵌套的子文档数组。

在使用Typegoose进行重构之前,我使用mongoose编写了以下工作代码:

接口:

代码语言:javascript
复制
export interface IFamily extends Document {
    name: string;
    products: IProduct[];
}

模式:

代码语言:javascript
复制
const familySchema: Schema = new Schema({
    name: { type: String },
    products: [{ type: Schema.Types.ObjectId, ref: 'Product' }]
});

当我执行Family.findById('5f69aa0a56ca5426b44a86c5')时,我的JSON结果中有一个产品ObjectId数组。

在重构之后,我使用Typegoose:

类:

代码语言:javascript
复制
@modelOptions({ schemaOptions: { collection: 'families' } })
export class Family {
    
    @prop({ type: Schema.Types.ObjectId })
    public _id?: string;
    @prop({ type: String, required: false })
    public name?: string;
    @prop({ ref: () => Product, required: true, default: [] })
    public products!: Product[];
}

当我这样做的时候:

代码语言:javascript
复制
getModelForClass(Family).findById('5f69aa0a56ca5426b44a86c5')

带有ObjectId数组的属性"products“不在结果中(缺少该属性):

代码语言:javascript
复制
{
  "_id": "5f69aa0a56ca5426b44a86c5",
  "name": "Fourniture"
}

我不知道该怎么做。我认为问题出在家庭类@prop(ref)中。我看到一些人们使用@arrayProp的例子,但现在已经被弃用了。

我在一个简单对象中找到了关于ref的文档,但在Typegoose版本为5.9.1的对象数组中找不到。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 02:34:00

除了使用旧版本的typegoose和新的“语法”

这是typegoose (7.4)中应该是这样的

代码语言:javascript
复制
@modelOptions({ schemaOptions: { collection: 'families' } })
export class Family {
    @prop()
    public _id?: string;

    @prop()
    public name?: string;

    @prop({ ref: () => Product, required: true, default: [] })
    public products!: Ref<Product>[]; // if Product's "_id" is also "string", then it would need to be ": Ref<Product, string>[];"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65021307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档