業務自動化とプログラミングのためのTips

自動化.work

Go

Cloud Datastoreを使った簡易メッセージボード

投稿日:

Google Cloud PlatformにはCloud DatastoreというNoSQLデータベースサービスがあります。
このサービスは無料枠がそこそこあるという特徴があります。

料金と割り当て | Cloud Datastore のドキュメント | Google Cloud

Google App Engineと組み合わせて使えばサーバ代をかけずにWebアプリケーションがインターネット上にデプロイできます。

簡易メッセージボードの仕様

簡易メッセージボードは以下のような画面になります。

簡易メッセージボード画面

名前とメッセージを入れて書き込むと、書き込んだ時間とともに名前、メッセージが追加されていきます。
メッセージが存在しているときはメッセージを全て消すボタンが出現します。

ファイル構成

datasotre-messageboard/
|-app.yaml
|-main.go
|-dsmessage/dsmessage.go
|-templates/main.html

コード

main.go

datastoreではSQLのように一度に全てのレコードを削除するようなコマンドはないようなので、全てのキーを取得してから一つずつdatastore.Delete(c,k)で削除しています。

dsmessage.go

dsmessage.goはメッセージの構造体を定義したファイルです。
メソッドとして未記入項目を埋めるFillout()、現在時刻を設定するSetCurrentDate()があります。

main.html(テンプレート)

app.yaml

ビルドと重複インポートエラー回避

GOPATH内でプロジェクトのディレクトリを作りソースコードを置いた状態で、そのプロジェクトのディレクトリで

goapp serve

もしくは

dev_appserver.py app.yaml

で実行すると以下のようなエラーが出て正常にビルドができません。

Failed parsing input: app file XXXXX.go conflicts with same file imported from GOPATH

これはGOPATH内でビルドをするとパッケージを二重に読み込む問題が発生するためです。
これを回避するには作成したプロジェクトのフォルダはGOPATH以外の場所に移動またはコピーさせ、そこから実行することで回避できます。
プロジェクト内の自分で作成したpackageのディレクトリは移動させる必要はありません。

datastoreの確認

http://localhost:8000 にアクセスするとdatastoreに保存されているエンティティの確認ができます。

datastoreのエンティティ

また、保存されているエンティティを変更したり、新規にエンティティを作成することもできます。
datastoreのエンティティ変更


-Go
-,

Copyright© 自動化.work , 2019 All Rights Reserved.