Home > database >  Type '(err: any) => void' has no properties in common with type 'QueryOptions'
Type '(err: any) => void' has no properties in common with type 'QueryOptions'

Time:01-11

I have the following route in a Node controller that is giving me an error that prevents Node from running

public async deletePost(req: Request, res: Response) {
    const { id } = req.params;
    const deletedPost = await BlogPostModel.findByIdAndDelete(id, err => {
      if (err) {
        res.status(400).send.send('Error deleting post');
      }
    });

    // needs to send error if post not found (400 status code)

    res.status(200).send(deletedPost);
  }

I get an error for the err => { section of my code saying:

Type '(err: any) => void' has no properties in common with type 'QueryOptions'

I don't fully understand this error, but it sounds like its requiring I type out the argument in the error handling callback function. However, I've also tried (err:any)=> and that doesn't work as well. Would anyone be able to fill me in on how to correctly use a callback function for error handling here?

CodePudding user response:

Seems like the second argument must be of type QueryOptions, but you pass a function instead

It's not how you should handle errors, you can't mix promises and callbacks

public async deletePost(req: Request, res: Response) {
  const { id } = req.params;
  try {
    const deletedPost = await BlogPostModel.findByIdAndDelete(id);
  } catch (err) {
    return res.status(400).send.send("Error deleting post");
  }

  res.status(200).send(deletedPost);
}
  • Related