Ref<PopulatedType, RawId>
Typings:
type Ref<
PopulatedType,
RawId extends mongoose.RefType = PopulatedType extends { _id?: mongoose.RefType }
? NonNullable<PopulatedType['_id']>
: mongoose.Types.ObjectId
>
Parameters:
| Name | Type | Description |
|---|---|---|
PopulatedType Required | object | The Type of the what is expected when it is populated |
RawId | mongoose.RefType | Overwrite the Reference type (the type of _id of PopulatedType) |
The Type Ref<PopulatedType, RawId> is the type used for References.
PopulatedType: This is the Class being referenced.RawId: This should be the_idType of the referenced Class, by default itsmongoose.Types.ObjectIdand should get automatically inferred if a_idproperty is present on the target class.
There are typeguards to check if a reference is populated or of the reference type:
tip
For more and better explained examples, look at the Reference Other Classes Guide.
Example
Class to-be-referenced:
class Kitten {
@prop()
public name?: string;
}
Single Reference:
class Person {
@prop({ ref: () => Kitten })
public pet?: Ref<Kitten>;
}
Reference Array:
class Cat {
@prop({ ref: () => Kitten })
public babies?: Ref<Kitten>[];
}
Reference with different _id type:
class Kitten {
@prop()
public _id?: string;
@prop()
public name?: string;
}
// For Single References
class Person {
// The "type" options in this case refers to the "_id" type of the referenced class, by default it will be "ObjectId"
@prop({ ref: () => Kitten, type: () => String })
public pet?: Ref<Kitten, string>;
}
// For a Array of References
class Person {
// The "type" options in this case refers to the "_id" type of the referenced class, by default it will be "ObjectId"
@prop({ ref: () => Kitten, type: () => String })
public pet?: Ref<Kitten, string>[];
}