6 votes

Une valeur externe de 'this' est cachée par ce conteneur avec Mongoose Schema Typescript.

J'ai les éléments suivants pour un validateur de schéma pour MongoDB:{

UserSchema.path('email').validate(async function (email: string) {
  const count = await User.count({ email, _id: { $ne: this._id } })
  return !count
}, 'Email already exists')

J'obtiens l'erreur suivante :

'this' implicitly has type 'any' because it does not have a type annotation.ts(2683)
User.ts(171, 35): An outer value of 'this' is shadowed by this container.

Ceci est défini dans mon User.ts fichier. Tout fonctionne exactement comme prévu, mais cette erreur de type script empêche CI de continuer. Existe-t-il un moyen de contourner ce problème (sans mauvais jeu de mots) ?

8voto

Sonatai Points 96

Essayez :

UserSchema.path('email').validate(async function (this:any, email: string) {
  const count = await User.count({ email, _id: { $ne: this._id } })
  return !count
}, 'Email already exists')

Vous pouvez utiliser votre type à la place de "any".

Et le lien vers le document : https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X