AmplifyでたとえばTodoリストのようなものを作って、いくつかTodoを登録しリロードすると、登録した順番になっていないことに気づきました。
Amplifyに詳しい方に聞いてみると、デフォルトでは並びがおかしいらしいです。自分の実装がおかしいのではなくて良かった〜笑。
どうやらランダムで生成されるidで並び順を決めているそう。。。そりゃめちゃくちゃになるわ。
解決方法として参考にしたのはこちらの記事の @keyについて。この記事には本当にお世話になっている。ありがたい。
この記事ではnameでソートするようにしてるところを、createdAtにすればOK。
以下のようにkeyを追加。
type Note @model @auth(rules: [{ allow: owner }]) @key( name: "SortByCreatedAt" fields: ["owner", "createdAt"] queryField: "listNotesSortedByCreatedAt" ) { id: ID! title: String! content: String! owner: String! updatedAt: AWSDateTime createdAt: AWSDateTime }
pushします
amplify push
listNoteなどで一覧取得していた箇所を、listNotesSortedByCreatedAtに変更
API.graphql(graphqlOperation(listNotesSortedByCreatedAt, { owner: username }))
これでcreatedAtでソートされた一覧が取得できます。