因此,我创建了一个解析器,使用下面的代码在表中创建一个项。
const configSettingsDS = api.addDynamoDbDataSource('configSettingsDynamoTable', configurationSettingsTable);
configSettingsDS.createResolver({
typeName:'Mutation',
fieldName: 'createConfigSettings',
requestMappingTemplate: appsync.MappingTemplate.dynamoDbPutItem(
appsync.PrimaryKey.partition('id').auto(),
appsync.Values.projecting('configSettings')),
responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultItem(),
});
字符串
我似乎找不到一个在更新操作中复制相同的东西。任何帮助都是感激的。谢啦,谢啦
2条答案
按热度按时间9vw9lbht1#
更新解析程序的工作原理与创建解析程序几乎相同。在DynamoDB中,两者的操作都是
PutItem
,因此应用相同的Map模板。您需要将第一个参数从appsync.PrimaryKey.partion('id').auto()
更改为appsync.PrimaryKey.partion('id').is('<PATH_TO_YOUR_ID>')
。id可以是作为输入传递的对象的一部分。虽然我更喜欢将它分开,所以id不是输入对象的一部分。下面是两种变体的一个非常基本的示例。
graphql schema:
字符串
解析器编码:
型
我只是不得不为我的项目解决同样的问题。以下是我如何设置它的一些片段:
部分graphql schema:
型
cdk中对应的解析器:
型
lb3vh1jj2#
实际上,DynamoDB提供了一个操作 UpdateItem。但CDK并没有实现它(至少在我看来是这样)。我使用
appsync.Values.projecting
的问题是,如果我在执行PutItem
时不知道表中的所有字段,我会丢失现有字段。