Tengo un problema al exponer correctamente el _id usando el serializador.
Yo suelo:
@UseInterceptors(ClassSerializerInterceptor) @SerializeOptions({ strategy: 'excludeAll' })
La clase definida:
export class UpdatedCounts { @Expose() _id: ObjectId; @Expose() aCount: number; @Expose() bCount: number; constructor(partial: Partial<MyDocument>) { Object.assign(this, partial); } }
El objeto en console.log() antes de que se ejecute a través del Serializador
{ _id: new ObjectId("61c2256ee0385774cc85a963"), bannerImage: 'placeholder2', previewImage: 'placeholder', aCount: 1, bCount: 0, }
El objeto que se devuelve:
{ "_id": {}, "aCount": 1, "bCount": 0 }
Entonces, ¿qué pasó con mi _id?
Intenté usar el tipo de cadena en lugar de ObjectId pero eso tampoco funciona
No quiero usar @Exclude ya que hay 10 accesorios más que omití en el ejemplo console.log(), y debería ser más fácil excluirlos todos y usar solo estos 3
Solo usa @Transform
:
@Expose() @Transform((params) => params.obj._id.toString()) _id: ObjectId;
No puede simplemente enviar ObjectId con JSON. Debe convertirlo en una cadena.