AppSyncのQueryを同時に呼ぶ
AppSync Query 2 1 get list 1 create update This article describes how to call AppSync Query at the same time. It provides two examples, one for calling get and list at the same time, and the other for calling create and update at the same time.
by JanitorSep 03, 2023
AppSyncでデータを取得する際、数種類のQueryや数種類のMutationはそれぞれ同時に呼ぶことができます。あのデータどこに入れたっけと探す手間が省けますので、参考になれば幸いです。この記事ではJavascriptを例にしています。
AppSyncでデータを取得する際、数種類のQueryや数種類のMutationはそれぞれ同時に呼ぶことができます。あのデータどこに入れたっけと探す手間が省けますので、参考になれば幸いです。この記事ではJavascriptを例にしています。
Jump Links
例1.getとlistを同時に呼ぶ
例2.createとupdateを同時に呼ぶ
おわりに
例1.getとlistを同時に呼ぶ
例1.getとlistを同時に呼ぶ
今回は、APIKeyを使用しています。Cognitoの認証の場合は、headerの「x-api-key」を「Authorization」に変更してtokenを設定します。今回使用するAppSyncは下記リンク先のものです。idとdataのみが設定されているDynamoDBからAppSyncを作成しています。
https://comytom.com/anarticle/c8e1890a-f724-40be-a820-28601c1eb2ec
今回は、APIKeyを使用しています。Cognitoの認証の場合は、headerの「x-api-key」を「Authorization」に変更してtokenを設定します。今回使用するAppSyncは下記リンク先のものです。idとdataのみが設定されているDynamoDBからAppSyncを作成しています。
https://comytom.com/anarticle/c8e1890a-f724-40be-a820-28601c1eb2ec
const headersValue = { 'Content-Type': 'application/graphql', 'x-api-key': APIキー };
var appSyncEndPoint = AppSyncエンドポイントURL;
var knownId = 既知のid;
var queryCombine = `query MyQuery {
getExistingTable(id: \"${knownId}\" ){ id data }
listExistingTables(filter: {data: {gt: 80, lt: 90}}) { items { id data } }
}`;
var ret = await axios.post( appSyncEndPoint, { "query": queryCombine }, { headers: headersValue } );
console.log( ret.data.data );
const headersValue = { 'Content-Type': 'application/graphql', 'x-api-key': APIキー };
var appSyncEndPoint = AppSyncエンドポイントURL;
var knownId = 既知のid;
var queryCombine = `query MyQuery {
getExistingTable(id: \"${knownId}\" ){ id data }
listExistingTables(filter: {data: {gt: 80, lt: 90}}) { items { id data } }
}`;
var ret = await axios.post( appSyncEndPoint, { "query": queryCombine }, { headers: headersValue } );
console.log( ret.data.data );
上のソースコードを実行して下記のように出力されていれば成功です。
上のソースコードを実行して下記のように出力されていれば成功です。
{
getExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 42 },
listExistingTables: { items: [ [Object] ] }
}
{
getExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 42 },
listExistingTables: { items: [ [Object] ] }
}
今回の場合は、簡単に既知のidがあるという前提で作成しましたが、あるカテゴリの時系列データと、別のカテゴリの時系列データを取得したい、というようなときに、同時に取得が可能です。
今回の場合は、簡単に既知のidがあるという前提で作成しましたが、あるカテゴリの時系列データと、別のカテゴリの時系列データを取得したい、というようなときに、同時に取得が可能です。
例2.createとupdateを同時に呼ぶ
例2.createとupdateを同時に呼ぶ
var mutation1Id = "mutation1";
const randRange = ( min: number, max: number ) => Math.floor( Math.random() * ( max - min + 1 ) + min );
var mutationCombine = `mutation MyMutation {
createExistingTable(input: {id: \"${mutation1Id}\", data: ${randRange(0,100)}}) { id data }
updateExistingTable(input: {id: \"${knownId}\", data: ${randRange(0,100)}}) { id data }
}`
var ret = await axios.post( appSyncEndPoint, { "query": mutationCombine }, { headers: headersValue } );
var mutation1Id = "mutation1";
const randRange = ( min: number, max: number ) => Math.floor( Math.random() * ( max - min + 1 ) + min );
var mutationCombine = `mutation MyMutation {
createExistingTable(input: {id: \"${mutation1Id}\", data: ${randRange(0,100)}}) { id data }
updateExistingTable(input: {id: \"${knownId}\", data: ${randRange(0,100)}}) { id data }
}`
var ret = await axios.post( appSyncEndPoint, { "query": mutationCombine }, { headers: headersValue } );
上のソースコードを実行して下記のように出力されていれば成功です。
上のソースコードを実行して下記のように出力されていれば成功です。
{
createExistingTable: { id: 'mutation1', data: 25 },
updateExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 91 }
}
{
createExistingTable: { id: 'mutation1', data: 25 },
updateExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 91 }
}
おわりに
おわりに
API.graphql()で実施する方法を調べてみたのですが見つかりませんでした。batchAdd、batchGet、batchDeleteと併用していけば、ブロッキングも少なくなるのではないでしょうか。
API.graphql()で実施する方法を調べてみたのですが見つかりませんでした。batchAdd、batchGet、batchDeleteと併用していけば、ブロッキングも少なくなるのではないでしょうか。
AppSyncのQueryを同時に呼ぶ
AppSync Query 2 1 get list 1 create update This article describes how to call AppSync Query at the same time. It provides two examples, one for calling get and list at the same time, and the other for calling create and update at the same time.
by JanitorSep 03, 2023
AppSyncでデータを取得する際、数種類のQueryや数種類のMutationはそれぞれ同時に呼ぶことができます。あのデータどこに入れたっけと探す手間が省けますので、参考になれば幸いです。この記事ではJavascriptを例にしています。
AppSyncでデータを取得する際、数種類のQueryや数種類のMutationはそれぞれ同時に呼ぶことができます。あのデータどこに入れたっけと探す手間が省けますので、参考になれば幸いです。この記事ではJavascriptを例にしています。
Jump Links
例1.getとlistを同時に呼ぶ
例2.createとupdateを同時に呼ぶ
おわりに
例1.getとlistを同時に呼ぶ
例1.getとlistを同時に呼ぶ
今回は、APIKeyを使用しています。Cognitoの認証の場合は、headerの「x-api-key」を「Authorization」に変更してtokenを設定します。今回使用するAppSyncは下記リンク先のものです。idとdataのみが設定されているDynamoDBからAppSyncを作成しています。
https://comytom.com/anarticle/c8e1890a-f724-40be-a820-28601c1eb2ec
今回は、APIKeyを使用しています。Cognitoの認証の場合は、headerの「x-api-key」を「Authorization」に変更してtokenを設定します。今回使用するAppSyncは下記リンク先のものです。idとdataのみが設定されているDynamoDBからAppSyncを作成しています。
https://comytom.com/anarticle/c8e1890a-f724-40be-a820-28601c1eb2ec
const headersValue = { 'Content-Type': 'application/graphql', 'x-api-key': APIキー };
var appSyncEndPoint = AppSyncエンドポイントURL;
var knownId = 既知のid;
var queryCombine = `query MyQuery {
getExistingTable(id: \"${knownId}\" ){ id data }
listExistingTables(filter: {data: {gt: 80, lt: 90}}) { items { id data } }
}`;
var ret = await axios.post( appSyncEndPoint, { "query": queryCombine }, { headers: headersValue } );
console.log( ret.data.data );
const headersValue = { 'Content-Type': 'application/graphql', 'x-api-key': APIキー };
var appSyncEndPoint = AppSyncエンドポイントURL;
var knownId = 既知のid;
var queryCombine = `query MyQuery {
getExistingTable(id: \"${knownId}\" ){ id data }
listExistingTables(filter: {data: {gt: 80, lt: 90}}) { items { id data } }
}`;
var ret = await axios.post( appSyncEndPoint, { "query": queryCombine }, { headers: headersValue } );
console.log( ret.data.data );
上のソースコードを実行して下記のように出力されていれば成功です。
上のソースコードを実行して下記のように出力されていれば成功です。
{
getExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 42 },
listExistingTables: { items: [ [Object] ] }
}
{
getExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 42 },
listExistingTables: { items: [ [Object] ] }
}
今回の場合は、簡単に既知のidがあるという前提で作成しましたが、あるカテゴリの時系列データと、別のカテゴリの時系列データを取得したい、というようなときに、同時に取得が可能です。
今回の場合は、簡単に既知のidがあるという前提で作成しましたが、あるカテゴリの時系列データと、別のカテゴリの時系列データを取得したい、というようなときに、同時に取得が可能です。
例2.createとupdateを同時に呼ぶ
例2.createとupdateを同時に呼ぶ
var mutation1Id = "mutation1";
const randRange = ( min: number, max: number ) => Math.floor( Math.random() * ( max - min + 1 ) + min );
var mutationCombine = `mutation MyMutation {
createExistingTable(input: {id: \"${mutation1Id}\", data: ${randRange(0,100)}}) { id data }
updateExistingTable(input: {id: \"${knownId}\", data: ${randRange(0,100)}}) { id data }
}`
var ret = await axios.post( appSyncEndPoint, { "query": mutationCombine }, { headers: headersValue } );
var mutation1Id = "mutation1";
const randRange = ( min: number, max: number ) => Math.floor( Math.random() * ( max - min + 1 ) + min );
var mutationCombine = `mutation MyMutation {
createExistingTable(input: {id: \"${mutation1Id}\", data: ${randRange(0,100)}}) { id data }
updateExistingTable(input: {id: \"${knownId}\", data: ${randRange(0,100)}}) { id data }
}`
var ret = await axios.post( appSyncEndPoint, { "query": mutationCombine }, { headers: headersValue } );
上のソースコードを実行して下記のように出力されていれば成功です。
上のソースコードを実行して下記のように出力されていれば成功です。
{
createExistingTable: { id: 'mutation1', data: 25 },
updateExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 91 }
}
{
createExistingTable: { id: 'mutation1', data: 25 },
updateExistingTable: { id: '4550620a-eb13-4d74-981f-62747c8777f1', data: 91 }
}
おわりに
おわりに
API.graphql()で実施する方法を調べてみたのですが見つかりませんでした。batchAdd、batchGet、batchDeleteと併用していけば、ブロッキングも少なくなるのではないでしょうか。
API.graphql()で実施する方法を調べてみたのですが見つかりませんでした。batchAdd、batchGet、batchDeleteと併用していけば、ブロッキングも少なくなるのではないでしょうか。