読者です 読者をやめる 読者になる 読者になる

Datastore/Go で datastore: unsupported struct field type: xxx のエラー

GCP

以下の struct を Datastore に put しようとしたら・・・ type User struct { _kind string `goon:"kind,User"` ID string Tasks []*Tasks } type Task struct { Title string } 以下のエラーが発生した。 datastore: unsupported struct field type: *Task…

Datastore/Go の Get(), GetMulti() で指定した key が存在しない場合はエラーになる

GCP

ちょっとまとめておこうかと。間違っているところがあったらブログのコメント or twitter で教えてください。 (´・ω・`)Datastore では Get() に指定した key の entity が存在しない場合、 datastore.ErrNoSuchEntity というエラーが発生する。 *データが…

(継続的に追記)Datastore/Go のデータ設計のコツ

Datastoreを使っていて、 ある程度コツとか注意点みたいなものが分かってきたので、 まとめてみました。 継続的に追記していく予定です。間違っているところがあれば コメント or twitter で教えてください。Datastoreの entity, kind などの用語は理解して…

Datastore/GO で datastore: flattening nested structs leads to a slice of slices: field xxx

以下のエラーが出た。 datastore: flattening nested structs leads to a slice of slices: field xxx Datastore は以下のように struct をネストすることができるが、 type A struct { B []B } type B struct { Name string } 以下のようにネストした struc…

goonで生成されるmemcacheのキー

goonで生成されるmemcacheのキーってどーやって作ってんのかな? と思って調べてみました。以下で生成している。 https://github.com/mjibson/goon/blob/master/goon.go#L71-L74Entityのkeyをエンコードして、「g2:」というプレフィクスを付けている。 ローカ…

DataStore で Only ancestor queries are allowed inside transactions. のエラー

GCP

DataStore で以下のエラーが出た。 Only ancestor queries are allowed inside transactions. のエラーググると以下がヒット。 http://stackoverflow.com/questions/14397207/why-do-i-get-only-ancestor-queries-are-allowed-inside-transactions-error結論…

DatastoreのParentKey(AncestorQuery)の特徴と使い所(datastore when to use parentkey)

GCP

とはいえ、ちょっと自信ないので、 間違っている箇所があれば指摘してもらえると嬉しい。 ParentKeyはEntity同士を関連付けるキーのことで、 RDBでいう外部キーのようなイメージを持つかもしれないが、全然違う。 何も考えずにParentKeyでリレーションを貼る…

BlobStoreAPI で Error: Server Error

BlobStoreAPIで以下のエラーが発生した。 Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it…

golang + BlobStoreAPI で ERROR: blobstore: error reading next mime part with boundary "===============xxxxx==" (len=xx): multipart: NextPart: EOF のエラー

ERROR: blobstore: error reading next mime part with boundary "===============xxxxx==" (len=xx): multipart: NextPart: EOF GAEのBlobStoreAPIにファイルをアップロードした後にリダイレクトされるエンドポイントで 以下のように blobstore.ParseUpload…

golangでGCSにzipファイルをアップロードする

zipだからといって、特別なことは必要ない。 普通に書き込めばいいだけなので、 zipファイルを読み込んで、 以下のGCSのサンプルにあるように wc.Wtite() に []byte を渡してやればいい。 https://github.com/GoogleCloudPlatform/gcloud-golang/blob/master…

Google Cloud Storage のバケット直下にフォルダを作成する

GCP

結論から言うと、 ファイル名をスラッシュ区切りにすれば自動的にフォルダが作成される。GCSのサンプルコードでいうと、 以下の fileName という引数を 「my_dir/test.txt」のように指定すれば、my_dir の下に test.txt が生成される。 https://github.com/G…

GAE で Error: Request Entity Too Large のエラー

GCP

以下のエラーが出た。 Error: Request Entity Too Large Your client issued a request that was too large.これは GEA に送信するデータが制限を超えている場合に出る。 自分は 45MB くらいのファイルを form から POST したら発生。 このファイルをGCSに保…

Google Coud Storage はローカルの開発サーバでエミュレートできない

GCP

エミュレートできないので、 GCPにデプロイして確認する必要がある。https://cloud.google.com/sdk/gcloud/reference/beta/emulators/対応しているのは以下のみ。bigtable https://cloud.google.com/sdk/gcloud/reference/beta/emulators/bigtable/datastore…