AWS Amplify CLI 生成的 GraphQL 突变中的 $condition 输入参数是什么?
What is the $condition input parameter for in a GraphQL mutation generated by AWS Amplify CLI?
我已经在 AWS AppSync(使用 CLI)上从这个模型生成了一个简单的 GraphQL API:
type WalletProperty @model {
id: ID!
title: String!
}
这生成了与此类似的 CreateWalletProperty、UpdateWalletProperty 和 DeleteWalletProperty 突变:
mutation CreateWalletProperty(
$input: CreateWalletPropertyInput!
$condition: ModelWalletPropertyConditionInput <<<<<<<<<<<< what is this for?
) {
createWalletProperty(input: $input, condition: $condition) {
id
title
createdAt
updatedAt
}
}
条件的架构是:
input ModelWalletPropertyConditionInput {
title: ModelStringInput
and: [ModelWalletPropertyConditionInput]
or: [ModelWalletPropertyConditionInput]
not: ModelWalletPropertyConditionInput
}
鉴于我总是必须提供强制性的 $input,$condition 参数有什么用?
在我上面的例子中,GraphQL 由 DynamoDB 支持 table;
在幕后,GraphQL 操作转换为 PutItem、UpdateItem 和 DeleteItem DynamoDB 操作。
对于这些数据操作操作,DynamoDB API 允许您指定条件表达式来确定应修改哪些项目。如果条件表达式的计算结果为真,则操作成功;否则,操作失败。
您可以在 AWS Condition Expressions DynamoDB dev guide
上阅读有关每个条件的用例的更多信息
在GraphQL变异级别,只有记录满足条件,才会进行变异。否则不允许更改并返回 ConditionalCheckFailedException:
"errors": [
{
"path": [
"deleteWalletProperty"
],
"data": null,
"errorType": "DynamoDB:ConditionalCheckFailedException",
"errorInfo": null,
"locations": [
{
"line": 12,
"column": 3,
"sourceName": null
}
],
"message": "The conditional request failed (Service: DynamoDb, Status Code: 400, Request ID: E3PR9OM6M5J1QBHKNT8E4SM1DJVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: null)"
}
]
我已经在 AWS AppSync(使用 CLI)上从这个模型生成了一个简单的 GraphQL API:
type WalletProperty @model {
id: ID!
title: String!
}
这生成了与此类似的 CreateWalletProperty、UpdateWalletProperty 和 DeleteWalletProperty 突变:
mutation CreateWalletProperty(
$input: CreateWalletPropertyInput!
$condition: ModelWalletPropertyConditionInput <<<<<<<<<<<< what is this for?
) {
createWalletProperty(input: $input, condition: $condition) {
id
title
createdAt
updatedAt
}
}
条件的架构是:
input ModelWalletPropertyConditionInput {
title: ModelStringInput
and: [ModelWalletPropertyConditionInput]
or: [ModelWalletPropertyConditionInput]
not: ModelWalletPropertyConditionInput
}
鉴于我总是必须提供强制性的 $input,$condition 参数有什么用?
在我上面的例子中,GraphQL 由 DynamoDB 支持 table;
在幕后,GraphQL 操作转换为 PutItem、UpdateItem 和 DeleteItem DynamoDB 操作。
对于这些数据操作操作,DynamoDB API 允许您指定条件表达式来确定应修改哪些项目。如果条件表达式的计算结果为真,则操作成功;否则,操作失败。
您可以在 AWS Condition Expressions DynamoDB dev guide
上阅读有关每个条件的用例的更多信息在GraphQL变异级别,只有记录满足条件,才会进行变异。否则不允许更改并返回 ConditionalCheckFailedException:
"errors": [
{
"path": [
"deleteWalletProperty"
],
"data": null,
"errorType": "DynamoDB:ConditionalCheckFailedException",
"errorInfo": null,
"locations": [
{
"line": 12,
"column": 3,
"sourceName": null
}
],
"message": "The conditional request failed (Service: DynamoDb, Status Code: 400, Request ID: E3PR9OM6M5J1QBHKNT8E4SM1DJVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: null)"
}
]