For at transformere dit almindelige JavaScript-objekt returneret af toObject ind i et indtastet objekt, vil du måske bruge class-transformer bibliotek (biblioteket anbefales af Nest.js
til valideringsformål).
Trin 1.
Installer først class-validator :
$ npm i --save class-transformer Trin 2.
Når den er installeret, forudsat Bruger klasse har følgende egenskaber:
klasse Bruger { public id:any; offentlig e-mail:streng; offentlig adgangskode:nummer; }
Opret endnu en klasse ved navn UserWithoutPassward og importer Ekskluder
importer { Exclude } fra "class-transformer";klasse UserWithoutPassword udvider bruger { @Exclude() offentlig adgangskode:nummer}
Vi bruger Exclude annotation for at lade klasse-transformer ved, at vi gerne vil udelukke adgangskode .
Trin 3.
importer plainToClass funktion:
importer { plainToClass } fra "class-transformer";
Og tilbage til din kode:
async validateUser(e-mail:string, password:string):Promise { const user =await this.usersService.findOne({ email }); if (bruger &&afvent sammenligne(adgangskode, bruger.adgangskode)) { return plainToClass(BrugerUdenPassword, bruger.toObject()); } returner null;}
plainToClass metoden transformerer et almindeligt javascript-objekt til en instans af en specifik klasse og accepterer følgende parametre:
- Klassen, der skal instansieres
- almindeligt objekt
Yderligere reference om biblioteket
Håber det hjælper.