You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AppSync JS解析器查询DynamoDB返回null问题排查求助

AppSync JS解析器查询DynamoDB返回null,但CloudWatch显示已获取数据

自定义AppSync JS解析器查询DynamoDB时始终返回null,但CloudWatch日志明确显示已经成功获取到数据,请求帮忙定位问题。

AppSync 查询

AppSync 查询截图

JS 解析器代码

import { util } from '@aws-appsync/utils';
import * as ddb from "@aws-appsync/utils/dynamodb";

export function request(ctx) {
  const { PK, limit = 20, nextToxen} = ctx.args;
  return ddb.query({
      query: {PK: {eq:  "SUE#" + PK} },
      limit,
      nextToxen,
  });
}

export function response(ctx) {
    return ctx.result;
}

CloudWatch 日志

{
    "logType": "AfterResponseFunctionEvaluation",
    "path": [
        "querySuE"
    ],
    "fieldName": "querySuE",
    "resolverArn": "arn:aws:appsyncxxxxxx",
    "requestId": "xxxxxxxxx",
    "context": {
        "arguments": {
            "PK": "zzzzz"
        },
        "result": {
            "items": [
                {
                    "createdAt": "2024-06-09T20:40:30.940Z",
                    "SK": "SUE#01HZZBPBEWXBCSMZMKG8MHF16Q",
                    "PK": "SUE#zzzzz",
                    "_TYPE": "SUE",
                    "title": "ichbintitel"
                },
                {
                    "createdAt": "2024-06-09T20:40:31.468Z",
                    "SK": "SUE#01HZZBPBZC6Q4WW003GQR1HXWC",
                    "PK": "SUE#zzzzz",
                    "_TYPE": "SUE",
                    "title": "ichbintitel"
                }
            ],
            "scannedCount": 2
        },
        "prev": {
            "result": {
                "items": [
                    {
                        "createdAt": "2024-06-09T20:40:30.940Z",
                        "SK": "SUE#01HZZBPBEWXBCSMZMKG8MHF16Q",
                        "PK": "SUE#zzzzz",
                        "_TYPE": "SUE",
                        "title": "ichbintitel"
                    },
                    {
                        "createdAt": "2024-06-09T20:40:31.468Z",
                        "SK": "SUE#01HZZBPBZC6Q4WW003GQR1HXWC",
                        "PK": "SUE#zzzzz",
                        "_TYPE": "SUE",
                        "title": "ichbintitel"
                    }
                ],
                "scannedCount": 2
            }
        },
        "stash": {},
        "outErrors": []
    },
    "fieldInError": false,
    "evaluationResult": {
        "items": [
            {
                "createdAt": "2024-06-09T20:40:30.940Z",
                "SK": "SUE#01HZZBPBEWXBCSMZMKG8MHF16Q",
                "PK": "SUE#zzzzz",
                "_TYPE": "SUE",
                "title": "ichbintitel"
            },
            {
                "createdAt": "2024-06-09T20:40:31.468Z",
                "SK": "SUE#01HZZBPBZC6Q4WW003GQR1HXWC",
                "PK": "SUE#zzzzz",
                "_TYPE": "SUE",
                "title": "ichbintitel"
            }
        ],
        "scannedCount": 2
    },
    "errors": [],
    "parentType": "Query",
    "graphQLAPIId": "xxxxxxxxx"
}

问题定位与解决建议

从CloudWatch日志可以确认,解析器已经成功从DynamoDB获取到数据(evaluationResult包含完整的items列表),返回null的核心原因几乎都是GraphQL Schema定义与解析器返回的数据结构不匹配,按以下步骤排查:

  1. 核对GraphQL Schema的返回类型定义

    • 确保Query类型中的querySuE字段返回类型,和解析器返回的{ items: [...], scannedCount: number }结构一致。比如是否定义了对应的嵌套类型:
      type SUEItem {
          createdAt: String
          SK: String
          PK: String
          _TYPE: String
          title: String
      }
      
      type SUEQueryResult {
          items: [SUEItem]
          scannedCount: Int
      }
      
      type Query {
          querySuE(PK: String!, limit: Int, nextToken: String): SUEQueryResult
      }
      
    • 如果Schema里querySuE被定义为直接返回[SUEItem](列表类型),而解析器返回的是包含items的对象,结构不匹配就会导致客户端拿到null。
  2. 调整解析器返回值结构

    • 如果Schema期望直接返回数据列表,修改response函数,返回ctx.result.items而非整个ctx.result:
      export function response(ctx) {
          return ctx.result.items;
      }
      
  3. 修正参数拼写错误

    • 解析器中nextToxen是拼写错误,正确应为nextToken,虽然本次请求未传该参数,但后续分页功能会受影响,建议修正。

内容的提问来源于stack exchange,提问作者Sami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:35:57