PRISMA: Getting type error on where clause in update method

Viewed 1534

Have a specific Prisma ORM library error that I need help with.

I have created a migration and pushed it to a postgres db.

I have generated the client model for Prisma and am able to findAll and insert data using the create method.

Where I am having trouble is the update method.

Here's my code

app.post("/articles/:title", async (req: Request, res: Response) => {
  const article = await prisma.article.update({
    where: { title: req.params.title },
    data: { title: req.body.title, content: req.body.content },
  })
  res.send('The article was posted sucessfully.' + article)
})

I am getting the following error which makes me think that the client is not finding a type 'title' when using the where argument.

app.ts:65:14 - error TS2322: Type '{ title: string; }' is not assignable to type 'ArticleWhereUniqueInput'. Object literal may only specify known properties, and 'title' does not exist in type 'ArticleWhereUniqueInput'.

65 where: { title: req.params.title }, ~~~~~~~~~~~~~~~~~~~~~~~

node_modules/.prisma/client/index.d.ts:784:3 784 where: ArticleWhereUniqueInput ~~~~~ The expected type comes from property 'where' which is declared here on type 'Subset<ArticleUpdateArgs, ArticleUpdateArgs>'

Has anyone else had this issue? I tried to introspect the database just to make sure the database was captured exactly as is, with title and content fields and then generated the client again.

Many thanks James

2 Answers

Found the answer: Post answer was a response from Antonie

The fields in

  • where

needs to be unique.

If you can make some field, let's say date @unique (date: DateTime! @unique), and use that for your where in the upsert, I think it would work (tested on my local).

Use .(find/update/delete)Many() if you are trying to query with multi values.

Related