带有nodejs查询问题的Graphql Prisma

Posted

技术标签:

【中文标题】带有nodejs查询问题的Graphql Prisma【英文标题】:Graphql Prisma with nodejs query question 【发布时间】:2020-09-28 01:18:17 【问题描述】:

我想写SQL查询到

SELECT 
   sm.menu_name
FROM
   shop.menu as sm LEFT JOIN shop.shop_menu as ssm
ON
   sm.idmenu = ssm.menu_id
WHERE
   sm.menu_name LIKE CONCAT('%', ?, '%')
Group by 
   sm.menu_name
Order by rand()

下面这个怎么写?

await prisma.menu.findMany()

请帮忙!

【问题讨论】:

我们不了解您的数据模型或架构。我们需要这两样东西才能开始寻求帮助。 【参考方案1】: 不需要您的 LEFT JOIN LIKE CONCAT -> 用于 prisma 的 StringFilter 包含 contains、startsWith 和 endsWith prisma 不支持 ORDER BY rand(),您有一些选择:在代码中随机排列数组或使用 prisma.raw 进行查询。

文档: https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/filtering https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access

【讨论】:

【参考方案2】:

会是这样的:

prisma.menu.groupBy(
    by: ['menu_name'],
    having: 
        shop_menu  : 
            menu_name:  contains: yourVariableName 
        
    
 )

但正如@mazzaker 所说,您必须自己按 rand 订购:/

【讨论】:

以上是关于带有nodejs查询问题的Graphql Prisma的主要内容,如果未能解决你的问题,请参考以下文章

Prisma graphql 计算域

NodeJs GraphQL 动态查询变量

使用 graphql 和 nodejs 填充猫鼬模式

带有错误“无法查询字段”的 Graphql 内容查询

如何在 Android 中发送带有片段的 graphql 查询

NodeJs 中的 GraphQl - 对象类型的解析器