Luego importamos este SubDoc dentro de la entidad que queramos que maneje la relación, así:
// src/products/entities/product.entity.tsimport{SubDoc,SubDocSchema}from'./sub-doc.entity';// 👈 import...exportclassProductextendsDocument{...@Prop({ type:SubDocSchema}) subDoc:SubDoc;// 👈 new field (1:1)@Prop({ type:[SubDocSchema]}) subDocs:Types.Array<SubDoc>;// 👈 new field (1:N)}...
Debes tener en cuenta que este SubDoc no va a estar declarado en el módulo, ya que es un documento embebido y no una colección.
Con esto ya tienes el objeto embebido con tipado y además lo puedes incluir en tus DTOS para una validación más poderosa, de la siguiente manera:
En este punto puedes crear un producto con un documento embebido de forma tipada y con una validación profunda, puedes ver esta forma en la rama 18 del proyecto por si quieres revisar el código a más detalle.
Si haces un POST te debería resultar algo así:
Tipado de Documentos Embebidos en NestJS con Mongoose