質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • Go

    457questions

    Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Golang Dynamodb ストラクトタグが機能しないことについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 734

sueken5

score 4

 コード

# 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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

タグはスペースで区切られるため、コロンの後にスペースを入れてはいけません。
Url string `json: "url" dynamo: "url"`  ではなくて Url string `json:"url" dynamo:"url"`  としてみてください。Url以外も同様です。

real_estate_id と distinct_id が正常に登録されているのはどちらもコロンの後にスペースが入っていないためです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Go

    457questions

    Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。