Prisma:如何找到与 id 列表匹配的所有元素?

Prisma : how can I find all elements that match an id list?

我正在将 Prisma 与 NextJs 结合使用。

在我的 API 中,我向后端发送了一个数字列表,这些数字对应于我数据库中对象的 ID。

例如,如果我收到列表 [1, 2, 12],我想 return id 为 1、2 或 12 的对象

这是一个更复杂的查询的一部分(排序/计数/...),但我在第一步阻止是获取元素列表

到目前为止我有这个:

import { PrismaClient, Prisma } from '@prisma/client'

const prisma = new PrismaClient()


export default async function handler(req, res) {
    if (req.method !== 'POST') {
        res.status(400).send({ message: 'Only POST requests allowed for this route' })
    } else {
        const { signes_id } = req.query
        const signes_array = signes_id.split(",").map(function(item) {
            return parseInt(item)
        })
        console.log(signes_array)
        const ret = await prisma.signe.findMany({
            where: {
                id: Number(signes_array),
            }
        })
        res.status(200).send(ret)
    }
}

这不起作用,因为 Number 需要一个 int,而不是一个 int 数组

如何编写查询,例如 return所需的对象数组?
我该如何处理不匹配的 ID?

可以使用in运算符在findMany.

中查询多个id

示例:

 const ret = await prisma.signe.findMany({
            where: {
                id: { in: [1, 2, 12] },
            }
        })

prisma client reference 中提供了更多详细信息。