AWS Amplifyで匿名掲示板を作ってみた

2020-05-29AWS Amplify,IT記事制作物

AWS Amplifyで匿名掲示板を作ってみた

以下のURL

https://master.d1cb8uqtyd2rew.amplifyapp.com

いろんな機能がまったくない。そのうち追加するかも

開発録

APIの型は以下のようになっておりまーす

type Thread @model {
  id: ID!
  title: String!
  tags: [String]
  Comments: [Comment] @connection(keyName: "byThreadId", fields: ["id"])
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
}

type Comment
  @model
  @key(name: "byThreadId", fields: ["threadId", "createdAt"]) {
  id: ID!
  threadId: ID!
  content: String!
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
  good: Int
}

@connection と subscription を使ってみた。

githubはこちら

https://github.com/opvelll/nanasiAmplify

connectionとkeyで繋がった型の同時mutation

しかし、Amplify APIで親子の型を定義できるけど、同時に更新ってどうするんだろ。スレッド作りながら最初のコメント書くみたいなところね。わからんかったわ。

わからないからとりあえず、親型を作ったあとcreateFinishedみたいな関数の中で、子の型を作ることにした。動いとる。

ページのアドレス

最初のページはスレッドのリストを表示して、クリックするとスレッドごとのページに移動するようにした。

アドレスはconnectionとkeyでよく設定されるID型をそのまま使った。最初文字列を使ったけど、文字列型だとダブる可能性があるじゃん、だからプライマリーキーとかにして、ダブらないように設定したいじゃん、でもちゃんと調べたわけじゃないけど、文字列をプライマリーキーにして、かつ、String型をconnectionとkeyにするみたいなのは、できなさそうなんだよね。なんかドキュメントでできそうな匂いだしてるけどさぁ。

結局、connectionとkeyで渡す型はID型一辺倒になったわ。そしてアドレスもIDになってる。vue routerでアドレスのIDを読み取って検索するわけやね。そういうアドレスに割り切ったほうがすぐ作れる。

いつもの

前にも書いたけど、ルートになる型には変にkey付けれない。