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

Mat*_*tte 43 typescript next.js prisma

我将 Prisma 与 NextJs 一起使用。

在我的 API 中,我向后端发送与数据库中对象 ID 相对应的数字列表。

举个例子,如果我收到 list [1, 2, 12],我想返回 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

这并不像Number预期的那样工作,而是一个 int,而不是一个 int 数组

如何编写查询,使其返回所需的对象数组?
那么如何处理不匹配的 id 呢?

Tas*_*mam 104

可以使用运算符按多个内部in进行查询。idfindMany

例子:

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

Run Code Online (Sandbox Code Playgroud)

更多详细信息请参阅prisma 客户端参考