问题描述
我有一个集合名称Shop,另一个是成员。我想在收集店中存储数据 结构为:
@ObjectType('ShopType')
@InputType('ShopInput')
@Entity()
class Shop{
@Field(() => String,{ nullable: false })
@prop({ unique: true,required: true })
public id!: string;
@Field(() => String,{ nullable: false })
@prop({ unique: false,required: true })
public name!: string;
@Field(() => String,required: true })
public logo_url!: string;
@Field(() => String,required: true })
public registration_no!: string;
@Field(type => [Memeber],{ nullable: true })
@prop({
unique: false,required: false,ref: () => [Memeber],type: () => [Schema.Types.Mixed]. // Taken from package mongoose
})
public members?: Ref<Memeber>[];
}
与会员收藏相同
但是我遇到了错误:
商店验证失败:memebers.0:对值“ Document {\ n id:>'emp1.1',\ n类别:'waiter'的强制转换为ObjectId ',\ n名称:'3',\ n join_date:1600279449}“位于路径” memebers“,>成员:'3',\ n join_date:1600279449}”位于路径“ memebers”,成员: 值“ [成员{\ n id:'emp1.1',\ n
类别:“服务员”,\ n owner_id:“ 3”,\ n加入日期:1600279449} ]”位于路径“成员”处
解决方法
对不起,我解决了这个问题,因为我主要专注于使用typeorm来完成这项工作,但是正是goose创造了模型。 下面的代码可参考该解决方案:-
用于模型公司(父文档)
import { getModelForClass,prop } from '@typegoose/typegoose';
@ObjectType('CompanyType')
@InputType('CompanyInput')
@Entity('company')
class Company{
@Field(() => [Company] || null,{ nullable: true })
@prop({
unique: false,required: false,autocomplete: true,default: [],ref: 'Branch'
})
public branches?: Ref<Branch>[];
}
对于Model Branch(参考子文档)
import { getModelForClass,prop } from '@typegoose/typegoose';
@ObjectType('BranchType')
@InputType('BranchInput')
@Entity('branch')
class Branch{
@Field(() => Int,{ nullable: true })
@prop({
unique: false,})
@PrimaryGeneratedColumn('increment')
public id: number;
}
“ ref”以上是且永不做ref:()=>模型或ref:模型。 上面的代码也是MongoDB中引用子文档的示例,该示例将在create()或insertMany()上给出如下结果:-
{
branches: [ObjectId("Some pattern"),...]
}
这里的ObjectId是引用ID或ObjectId(_id),对于集合中的每个文档都是唯一的。 有关更多信息,请参考https://typegoose.github.io/typegoose/,对于ORM https://typeorm.io/#/