mongodb - Ett yttre värde av 'this' skuggas av denna behållare med Mongoose Schema Typescript


Jag har följande för en schemavaliderare för MongoDB:{

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

Jag får följande fel:

'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.

Detta definieras i min User.ts-fil. Allting fungerar exakt som förväntat men detta Typescript-fel hindrar CI från att fortsätta. Finns det något sätt att komma runt detta (ordvits förbehållen)?

Svar #1

Försök :

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')

Du kan använda din typ istället för "any".

Och länken till dokumentationen: https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters

Relaterade artiklar