2017-11-15 6 views
0

私は新しいです、そして、私はjavascript/nodeのバックグラウンドから来て、練習のために、私はいくつかのJavaScriptコードを書き直してきました。構造体の反復処理とデータベースクエリの実行

私は構造体(ノード内にオブジェクトです)があり、それを反復処理して2つのデータベースクエリを実行する必要があります。私は動作するものがありますが、それは費用がかかり、繰り返します。

構造体:私はJSONは私がアクティブ中の各役割の範囲のループに使用この構造体にバインドさ返すAPIリクエストを処理する機能に続い

type SiteUsers struct { 
    Active struct { 
     Moderators []string `json:"moderators"` 
     Admins  []string `json:"admins"` 
     Regulars []string `json:"regulars"` 
    } `json:"active"` 
} 

。それぞれについて、私は同じ最初のクエリを実行し、次にそれぞれに固有の2番目のクエリを実行します。

v := getSiteUsers(&usrs, website) 

for _, moderators := range v.Active.Moderators { 
    // Insert into user table 
    // Insert into user table with role of moderator 
} 

for _, admins := range v.Active.Admins { 
    // Insert into user table 
    // Insert into user table with role of admin 
} 

for _, regulars := range v.Active.Regulars { 
    // Insert into user table 
    // Insert into user table with role of regular 
} 

このメソッドは動作しますが、それは完全に右感じていないと私は、外出先で経験した人からのいくつかの入力を取得するのが大好きです。

+1

具体的な型として 'Admins'と' Regulars'を宣言して、表に挿入するときに型アサーションを避けることができます。 –

+3

その方法については、あなたの気持ちはどうですか?あなたは3つの別々のループを持たずにこれを行うことができると思いますか?また、何らかのタイプのスライスの代わりに空のインターフェースの 'Admins'と' Regulars'スライスがあるのはなぜですか? –

+0

[GORM](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwi0grWu_7_XAhUCtxQKHUhNCEgQFggnMAA&url=https%3A%2F%2Fgithub.com% 2Fjinzhu%2Fgorm&usg = AOvVaw2jjszk_MAcWnVY3dnZYIFW)ORMは、モデルの構造体をサポートしており、オブジェクト全体をデータベースに挿入することができます。 –

答えて

1

このようなものが良いでしょうか?

v := getSiteUsers(&usrs, website) 

insertUsers := func(users []string, role roleType) { 
    for _, user := range users { 
     // Insert into user table 
     // Insert into user table with given role 
    } 
} 

insertUsers(v.Active.Moderators, moderatorRole) 
insertUsers(v.Active.Admins, adminRole) 
insertUsers(v.Active.Regulars, regularRole)