Cannot read property ‘insertOnMatch’ of undefined – TypeScript

I’m using TypeScript to create a match/player module in mongoose. I create this insertOnMatch function to use the mongoose findOneAndUpdate function adding the player to my match schema, but I’m recieving a UnhandledPromiseRejectionWarning while trying to update that document in mongo

Full error code:

(node:508) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'insertOnMatch' of undefined

insertOnMatch function

  private async insertOnMatch (matchId: String, playerId: String): Promise<void> {
    await Match.findOneAndUpdate({ matchId: matchId }, { $push: { matchPlayers: { playerId: playerId, playerRefererMatchId: matchId } } })
  }

create function

public async create (req: Request, res: Response): Promise<Response> {
    const newPlayerConfig = {
      playerId: generatedPlayerId,
      playerMatchRefererId: req.params.matchId
    }

    const newPlayer = await Player.create(newPlayerConfig)

    this.insertOnMatch(newPlayer.playerMatchRefererId, newPlayer.playerId).catch(err => { console.error(err) })

    return res.json(newPlayer)
  }

Answer

As I understand you try to call insertOnMatch on a functional component using this. And it is undefined as there’s no class instance. accessing the ‘this’ keyword in a react functional component