Golang Dynamodb ストラクトタグが機能しないことについて
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,585
コード
# Model.go
package real_estates
import (
"../stations"
)
type RealEstate struct {
RealEstateId string `json:"real_estate_id" dynamo:"real_estate_id"`
Name string `json: "name" dynamo:"name"`
Code string `json: "code" dynamo:"code"`
Rent string `json: "rent" dynamo:"rent"`
AdministrativeExpenses string `json: "administrative_expenses" dynamo:"administrative_expenses"`
SecurityDeposit string `json: "security_deposit" dynamo: "security_deposit"`
KeyMoney string `json: "key_money" dynamo: "key_money"`
Deposit string `json: "deposit" dynamo: "deposit"`
FloorPlan string `json: "floor_plan" dynamo: "floor_plan"`
FloorPlanDetail string `json: "floor_plan_detail" dynamo: "floor_plan_detail"`
Square string `json: "square" dynamo: "square"`
Direction string `json: "direction" dynamo: "direction"`
Type string `json: "type" dynamo: "type"`
Old string `json: "old" dynamo: "old"`
Address string `json: "address" dynamo: "address"`
Storey string `json: "storey" dynamo: "storey"`
Floors string `json: "floors" dynamo: "floors"`
BuiltDate string `json: "built_date" dynamo: "built_date"`
Stations []stations.Station
Images []string `json: "images" dynamo: "images"`
IsSeparatedBathToilet bool `json: "is_separated_bath_toilet" dynamo: "is_separated_bath_toilet"`
HasAirConditioner bool `json: "has_air_conditioner" dynamo: "has_air_conditioner"`
IsWoodenFloor bool `json: "is_wooden_floor" dynamo: "is_wooden_floor"`
HasWashMachineSpace bool `json: "has_wash_machine_space" dynamo: "has_wash_machine_space"`
HasWashlet bool `json: "has_washlet" dynamo: "has_washlet"`
HasElevator bool `json: "has_elevator" dynamo: "has_elevator"`
IsSeparatedWashroom bool `json: "is_separated_washroom" dynamo: "is_separated_washroom"`
HasParking string `json: "has_parking" dynamo: "has_parking"`
HasBicycleParking bool `json: "has_bicycle_parking" dynamo: "has_bicycle_parking"`
Insurance string `json: "insurance" dynamo: "insurance"`
CanApplyNow string `json: "can_apply_now" dynamo: "can_apply_now"`
Structure string `json: "structure" dynamo: "structure"`
Commissions string `json: "commissions" dynamo: "commissions"`
TotalUnits string `json: "total_units" dynamo: "total_units"`
InitialCost string `json: "initial_cost" dynamo: "initial_cost"`
OtherCost string `json: "other_cost" dynamo: "other_cost"`
HasAutoLock bool `json: "has_auto_lock" dynamo: "has_auto_lock"`
IsPetFriendly bool `json: "is_pet_friendly" dynamo: "is_pet_friendly"`
Url string `json: "url" dynamo: "url"`
CreatedAt string `json:"created_at" dynamo:"created_at"`
UpdatedAt string `json:"updated_at" dynamo:"updated_at"`
DeletedAt string `json:"deleted_at" dynamo:"deleted_at"`
DistrictId string `json:"district_id" dynamo:"district_id"`
}
package real_estates
import (
"os"
"../../helpers/dynamodb"
)
func BatchWrite(realEstates ...RealEstate) (error) {
table := dynamodb.Table(os.Getenv("STAGE") + "_real_estates")
items := make([]interface{}, 0)
for _, value := range realEstates {
items = append(items, value)
}
_, err := table.Batch().Write().Put(items...).Run()
return err
}
実現したいこと
上記のコードを用いて、Dynamodbに対しBatchWriteし、RealEstateのデータを書き込みたい
問題
dynamodbに保存されるデータが以下のようになってしまします。
{
"Address": "XXX",
"Code": "XXX",
"Commissions": "XXX",
"district_id": "XXX",
"Floors": "XXX",
"HasAirConditioner": XXX,
"HasAutoLock": XXX,
"HasBicycleParking": XXX,
"HasElevator": XXX,
"HasWashlet": XXX,
"HasWashMachineSpace": XXX,
"Images": [],
"Insurance": "XXX",
"IsPetFriendly": XXX,
"IsSeparatedBathToilet": XXX,
"IsSeparatedWashroom": XXX,
"IsWoodenFloor": XXX,
"Name": "XXX",
"real_estate_id": "XXX",
"Rent": "XXX",
"Square": "XXX",
"Stations": [],
"Storey": "XXX",
"Structure": "XXX",
"Url": "XXX"
}
このように「real_estate_id」と「distinct_id」以外は大文字になってしまします。これをストラクトタグで定義したようにスネークケースにしたいです。
まとめ
皆様のお知恵をお借りできれば幸いです。また足りない情報などがございましたら、追記いたしますので、ぜひお申し付けください。よろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
タグはスペースで区切られるため、コロンの後にスペースを入れてはいけません。
Url string `json: "url" dynamo: "url"`
ではなくて Url string `json:"url" dynamo:"url"`
としてみてください。Url以外も同様です。
real_estate_id
と distinct_id
が正常に登録されているのはどちらもコロンの後にスペースが入っていないためです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる