Prisma orderBy 在 Playground 之外的解析器/查询中

Posted

技术标签:

【中文标题】Prisma orderBy 在 Playground 之外的解析器/查询中【英文标题】:Prisma orderBy in a resolver/query outside of Playground 【发布时间】:2018-11-19 07:19:41 【问题描述】:

好的,所以我已经与 Prisma 合作了几个星期,并且取得了一些很大的进步,我喜欢实现许多高级功能的设置/易用性。

我正在尝试对表字段进行排序。

我可以选择(在其他字段中)按term_ASCterm_DESC 排序。

假设以下查询定义:MyConnection(filter: String, order: MyOrderByInput, limit: Int, offset: Int): MyConnection!

如果我在 GraphQL Playground 中运行以下代码,它可以正常工作:

query myPaginatedResults 
    myConnection(filter: "lorem", limit: 25, offset: 0, order: term_ASC) 
        aggregate 
            count
        
        edges 
            node 
                id
                term
            
        
    

要点/问题... term_ASC/DESC 的用法在 Playground 中有效,但如何在我的 JS 中传递它?

如果我将它用引号“term_ASC”括起来,则会出现错误,如果它没有被包装,那么它(解析器/api)会抛出关于明显未定义变量的错误。

const myConnection = (parent, args, context, info) => 
  const where = args.filter
  ? 
    OR: [
       term_contains: args.filter ,
       type_contains: args.filter ,
       id_in: args.filter ,
    ],
   : 

  const order = args.order;
  // const order = `title_ASC`;
  const skip = args.offset ? args.offset : 0;
  const limit = args.limit ? args.limit : 50;

  // console.log(context.db.query);
  const results = context.db.query.myDbConnection(
    where,
    orderBy: order,
    first: limit,
    skip: skip,
  , info);

  return results;

所以我试图测试如何通过变量(硬编码,在此示例中注释掉)或在通过我的 args.order 传递到解析器之前测试如何传递这个 orderBy 变量的部分,我想不通应该如何通过。

【问题讨论】:

【参考方案1】:

好的,按照惯例,一旦我的问题被写下来/表达出来,我就会想出答案。

问题不在于我无法将来自 MyOrderByInput 的枚举值包含在解析器中的引号中或分配给预查询变量,问题在于我试图使用 title_ASC/@ 进行测试987654323@ 在我的类型上不存在。

-1 对我来说。

这里的教训:确保您使用的排序方法确实存在于您的 Prisma 架构中。

【讨论】:

以上是关于Prisma orderBy 在 Playground 之外的解析器/查询中的主要内容,如果未能解决你的问题,请参考以下文章

PRISMA:如何在 prisma 常规类型中跳过 id 字段?

prisma2 在 prisma 模式中设置长度和列类型

prisma 部署后,prisma 没有应用更改

如何在 Docker 中使用 Prisma 2

如何在 prisma 中使用带有外键的 createMany?

prisma 容器中的 AWS ECS 错误 - 环境变量 PRISMA_CONFIG