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

AppSync JS Resolver:DynamoDB update函数识别condition对象报错

AWS AppSync DynamoDB Update工具函数添加Condition报错问题

我尝试使用import { update } from "@aws-appsync/utils/dynamodb";来创建DynamoDBUpdateItemRequest。指定key和更新值时功能正常,但添加condition后触发错误:Property 'condition' is invalid condition object

实现代码如下:

import { update } from "@aws-appsync/utils/dynamodb";

export function request(ctx) {
  const updateObj = {
    key: { id: ctx.identity.username },
    update: {
      name: ctx.arguments.newProfile.name,
      imageUrl: ctx.arguments.newProfile.imageUrl,
    },
    // 启用此行会触发错误:
    condition: { expression: "attribute_exists(id)" },
  };

  const requestObj = update(updateObj);

  // 临时解决方法:将condition对象附加到生成的DynamoDBUpdateItem
  // requestObj.condition = { expression: "attribute_exists(id)" };
  return requestObj;
}

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

请问这是bug问题,还是我的condition对象格式确实不正确?


这不是Bug,是你传入的condition格式不符合@aws-appsync/utils/dynamodb工具函数的要求。

该工具函数的condition参数需要遵循AppSync封装的表达式格式,不能直接用原生DynamoDB的表达式字符串。正确写法有两种:

  1. 标准表达式格式(带属性名占位符):
condition: {
  expression: "attribute_exists(#id)",
  expressionNames: { "#id": "id" }
}
  1. 简化写法(工具函数支持的快捷语法):
condition: { exists: ["id"] }

你用临时方法能生效,是因为直接给生成的requestObj附加的是原生DynamoDB请求格式的condition,而工具函数内部对传入的updateObj参数有格式校验,它期望的是自身定义的封装格式,而非原生DynamoDB格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:42:58