首页 > 解决方案 > 如何在 GraphQL 中将值从 DB 返回到枚举类型

问题描述

在我的 Node 应用程序中,我使用的是 GraphQl,如果状态为 PENDING 或 ANSWERED 基于条件,我必须使用 KenxJS 从 DB 构建一个函数返回结果。GraphQL 中的状态是枚举类型,我很难将 JS 函数的结果转换为 GraphQL 的可理解枚举类型。

枚举类型

enum ConversationStatus {
  PENDING
  RESOLVED
}

有结果但在 GraphQL 中的函数给出错误

"message": "Expected a value of type \"ConversationStatus\" but received: { status: \"ANSWERED\" }",
conversationStatus({ id }) {
    const status = this.tx(feedTableName)
      .select(feedColumns.status)
      .innerJoin(
        tableName,
        `${feedTableName}.${feedColumns.conversationId}`,
        `${tableName}.${columns.id}`
      )
      .where(feedColumns.conversationId, '=', id)
      .then(r => {
        if (r.some(e => e === 'PENDING_ANSWER')) {
          return {
            status: 'PENDING',
          };
        }
        return {
          status: 'ANSWERED',
        };
      });

    return status;
  }

if 检查 DB as 上是否至少有一个结果PENDING_ANSWER,我应该作为状态返回PENDINGRESOLVED如果为 false。

PENDINGand是 GraphQL的RESOLVED枚举类型,我不知道如何以正确的格式返回它们以避免错误

status: PENDING or RESOLVED

标签: javascriptnode.jsenumsgraphqlknex.js

解决方案


推荐阅读