GraphQL Cookbook
オブジェクトの更新
9 分
parse graphql apiを通じてオブジェクトを更新する 問題 parse graphql apiを通じて、データベース内の既存のオブジェクトを更新したい。 解決策 parse graphqlを使用すると、データベース内の既存のオブジェクトを更新する方法は2つあります。 一般的なミューテーションを使用する https //www back4app com/docs/parse graphql/graphql mutation update object#mutation generic これは、オブジェクトのクラスにまだ属していないフィールドを設定したい場合に使用する必要があるミューテーションです。 クラスミューテーションを使用する https //www back4app com/docs/parse graphql/graphql mutation update object#mutation class これは、オブジェクトのクラスがすでに更新したいすべてのフィールドを持っている場合に推奨されるミューテーションです。 バージョン情報 使用するparseのバージョンによって、graphqlクエリ、ミューテーション、結果はわずかに異なります。 実行しているparseのバージョンに応じて正しい例を選択してください。 汎用ミューテーションの使用 汎用ミューテーションを使用すると、parse serverはスキーマレスデータベースのように動作します。これは、オブジェクトのすべてのフィールドを事前に定義する必要がないことを意味します。更新したいフィールドを送信するだけで、parse serverはそれを保存するだけでなく、そこから学習し、このオブジェクトのクラスに新しいフィールドを自動的に作成します。 したがって、オブジェクトの 更新 更新 汎用ミューテーションは、オブジェクトのクラスにまだ属していないフィールドを設定したい場合に、既存のオブジェクトを更新するために使用しなければならないメソッドです。実際には、このミューテーションを使用して既存のオブジェクトを更新できますが、オブジェクトのクラスに更新したいすべてのフィールドがすでにある場合は、 クラスミューテーション https //www back4app com/docs/parse graphql/graphql mutation update object#mutation class を使用することをお勧めします。 この例は、既存のオブジェクトの classname classname と objectid objectid を使用する場合にのみ機能します。 オブジェクトを作成する レシピを使用してオブジェクトを作成できます。 parse 3 8 0 request 1 mutation updateobject { 2 update(classname "hero", objectid "rr8jmfrnks", fields { height 5 6 }) { 3 updatedat 4 } 5 } response 1 { 2 "data" { 3 "updatehero" { 4 "updatedat" "2019 11 04t13 28 44 150z" 5 } 6 } 7 } 例 parse 3 9 0以降: parse 3 9 0以降は、一般的なメソッドupdateを持っていません。オブジェクトを更新するには、以下の特定のメソッドを使用する必要があります。 クラスのミューテーションを使用する アプリケーションのスキーマでオブジェクトのクラスをすでに作成している場合(例えば、 オブジェクトを作成する https //www back4app com/docs/parse graphql/graphql mutation create object#mutation generic レシピを使用して)、parse serverは即座にgraphql apiに新しい update\<classname> update\<classname> ミューテーションを追加して、このクラスの既存のオブジェクトを更新します。 したがって、オブジェクトのクラスミューテーションは、オブジェクトのクラスがすでに更新したいすべてのフィールドを持っている場合に、既存のオブジェクトを更新するための推奨方法です。このミューテーションはクラスのデータを知っているため、コードの自動補完やバリデーションなどの追加機能を自動的に利用できるようになります。また、クラスの更新ミューテーションを通じて日付、ポインタ、リレーション、ファイル、ジオポイント、ポリゴン、またはバイトを送信する際にデータ型を指定する必要もありません。 この例は、クラスのミューテーションを使用し、 objectid objectid または id id を持つ既存のオブジェクトを使用する場合にのみ機能します。 オブジェクトを作成する レシピを使用してオブジェクトを作成できます。オブジェクトのクラスは、更新しようとしているすべてのフィールドを持っている必要があります。新しいフィールドを作成するには、 一般的なミューテーション を使用できます。 parse 3 10 0以降 request 1 mutation updateobject { 2 updatehero(input { 3 id "sgvybzpvrm5tvdm1ynbp" 4 fields { 5 height 5 6 6 } 7 }){ 8 hero{ 9 updatedat 10 } 11 } 12 } response 1 { 2 "data" { 3 "updatehero" { 4 "hero" { 5 "updatedat" "2020 02 06t13 31 49 866z" 6 } 7 } 8 } 9 } 古いparseサーバーバージョン parse 3 9 0 クラスミューテーション parseサーバー3 9 0 1 mutation updateobject { 2 updatehero(id "ckhurmmjzw" fields { 3 height 5 6 4 }){ 5 updatedat 6 } 7 } 結果parse 3 9 0 1 { 2 "data" { 3 "updatehero" { 4 "updatedat" "2019 11 04t13 30 20 457z" 5 } 6 } 7 } parse 3 8 0 クラスのミューテーション リクエスト 1 mutation updateobject { 2 updatehero(objectid "rr8jmfrnks" fields { 3 height 5 6 4 }){ 5 updatedat 6 } 7 } レスポンス 1 { 2 "data" { 3 "updatehero" { 4 "updatedat" "2019 11 04t13 38 46 343z" 5 } 6 } 7 } parse 3 7 2 一般的なミューテーション parse server 3 7 2 1 mutation updateobject { 2 objects { 3 update(classname "hero", objectid "ffyobotk85", fields { height 5 6 }) { 4 updatedat 5 } 6 } 7 } 結果 parse 3 7 2 1 { 2 "data" { 3 "objects" { 4 "update" { 5 "updatedat" "2019 07 15t05 57 14 416z" 6 } 7 } 8 } 9 } クラスのミューテーション parse server 3 7 2 1 mutation updatehero { 2 objects { 3 updatehero(objectid "jjh0aqqjfs", fields { height 3 6 }) { 4 updatedat 5 } 6 } 7 } 結果 parse 3 7 2 1 { 2 "data" { 3 "objects" { 4 "updatehero" { 5 "updatedat" "2019 07 15t05 51 25 572z" 6 } 7 } 8 } 9 }