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

如何通过GraphQL配置带自定义复合键的DynamoDB表(AWS Amplify)

配置AWS Amplify GraphQL使用自定义复合主键(分区键+排序键)

1. 修改GraphQL Schema定义模型

在Amplify项目的schema.graphql文件中,通过@model和@key指令定义包含自定义格式键的模型。我们明确指定partitionKey(对应DynamoDB分区键)和sortKey(对应排序键),同时保留原始的adId和businessId字段方便后续查询:

type Ad @model @key(fields: ["partitionKey", "sortKey"]) {
  partitionKey: String! # 固定格式:AD#<ad_id>
  sortKey: String!      # 固定格式:BUSINESS#<business_id>
  adId: String!         # 原始广告ID,可自动生成
  businessId: String!   # 原始商家ID
  # 其他业务字段示例
  title: String!
  content: String
}

如果希望Amplify自动生成唯一的adId,可以给字段加上@default指令:

adId: String! @default(value: uuid())

2. 前端创建数据时构造键值

在Expo/React Native代码中,创建广告时手动拼接partitionKey和sortKey的格式值,再传入GraphQL mutation:

// 导入Amplify API和生成的mutation
import { API, graphqlOperation } from 'aws-amplify';
import { createAd } from './graphql/mutations';

const createNewAd = async (businessId, title, content) => {
  // 示例:手动生成唯一adId(也可使用Amplify自动生成的uuid)
  const adId = Math.random().toString(36).substring(2, 10);
  
  try {
    const response = await API.graphql(graphqlOperation(createAd, {
      input: {
        partitionKey: `AD#${adId}`,
        sortKey: `BUSINESS#${businessId}`,
        adId,
        businessId,
        title,
        content
      }
    }));
    console.log('广告创建成功:', response.data.createAd);
  } catch (error) {
    console.error('创建广告失败:', error);
  }
};

3. 添加全局二级索引(GSI)优化查询

如果需要通过adId或businessId单独查询广告(无需依赖复合键),可以在Schema中添加额外的@key指令创建GSI:

type Ad @model 
  @key(fields: ["partitionKey", "sortKey"])
  @key(name: "AdsByAdId", fields: ["adId"], queryField: "adsByBusinessId") {
  partitionKey: String!
  sortKey: String!
  adId: String! @default(value: uuid())
  businessId: String!
  title: String!
  content: String
}

执行amplify push后,Amplify会自动在DynamoDB中创建对应的GSI,你就可以通过adsByAdId或adsByBusinessId查询语句快速获取数据。

关键说明

这种带前缀的复合键设计是DynamoDB中常见的业务维度分区方案,能让同类型或同业务关联的数据落在同一个分区内,提升查询效率。需要注意partitionKey + sortKey的组合必须全局唯一,避免数据覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:05:11