RX100で撮り歩くブログ

RX100で撮った写真を中心によりよい生活を目指すブログ

【Amplify】user idでtodoをフィルタリングして取得

AmplifyとReactやVueで認証付きのtodoみたいなチュートリアルはよく見ますが、作成したtodoがユーザーに紐づいてないと実用的ではないので、どう実現すればいいか調べたもののよく分からず、自分なりに実装してみたメモです。

もし、正しい方法知っている人いればぜひコメントください。

手順としては

  1. todoのschemeにownerを追加
  2. 作成時にownerにユーザー固有のidをもたせて作成
  3. 取得時は全リストの中からamplifyで用意されてるownerでフィルターして取得

こちらの記事の続きでやっていきます

blog.mismith.me

  1. todoのschemeにownerを追加

amplify/backend/api/stampNote/schema.graphqlを以下のように修正

type Note @model {
    id: ID!
    title: String!
    content: String!
    owner: String!
}

以下で反映させる

amplify push

2, 3. ownerを追加して作成、フィルタリングして取得

Amplifyにはfilterして取得するコードが用意されています。

const ListNotes = `
    query filter {
      listNotes(filter:{
        owner:{
          eq: "${user.sub}"
        }
      }){
        items{
          id title content
        }
      }
    }
  `;

全て取得していたところをこれで絞ります。