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.