2017-02-04 9 views
0

私がしようとしていることは、データベースからオブジェクト全体にオブジェクトをロードすることです。オブジェクトをゴーランに入れるにはどうすればいいですか

type RatingPK struct { 
    ratingsPK Rating 
} 

func (r *RatingPK) Init(rg Rating) { 
    r.ratingsPK = rg 
}  

func searchUserRatings(id string)(ratings []Rating) { 

    rows, err := db.Query("SELECT * FROM ratings WHERE userId = ?", id) 

    if err != nil { 
     return 
    } 

    for rows.Next() { 

     rate := Rating{} 

     err = rows.Scan(&rate.MovieId, &rate.UserId, &rate.RatingId, &rate.Rating, &rate.Timestamp) 

     if err != nil { 
      return 
     } 

     r := RatingPK{} 
     r.Init(rate) 
     ratings = append(ratings, r) 
    } 

    defer rows.Close() 

    return 
} 

このコードは、私にこの結果を与える:

[{ 
    "rating_id": 593, 
    "userId": 2, 
    "movieId": 93, 
    "rating": 3, 
    "timestamp": "0000-00-00" 
    }, 
    { 
    "rating_id": 616, 
    "userId": 2, 
    "movieId": 94, 
    "rating": 3, 
    "timestamp": "0000-00-00" 
    }] 

は、今私が何をしたいのか、配列の各オブジェクトを取得し、別のオブジェクトに配置することで、所望の結果がこのようになります。

[{"ratingsPK": { 
    "rating_id": 593, 
    "userId": 2, 
    "movieId": 93, 
    "rating": 3, 
    "timestamp": "0000-00-00" 
    }}, 
    {"ratingsPK": { 
    "rating_id": 616, 
    "userId": 2, 
    "movieId": 94, 
    "rating": 3, 
    "timestamp": "0000-00-00" 
    }}] 

これを達成する方法はありますか?

答えて

0

type RatingPK struct { 
    ratingsPK Rating 
} 

func (r *RatingPK) Init(rg Rating) { 
    r.ratingsPK = rg 
} 

func searchUserRatings(id string) (ratings []RatingPK) { 

    rows, err := db.Query("SELECT * FROM ratings WHERE userId = ?", id) 

    if err != nil { 
     return 
    } 

    var myarray []string 

    for rows.Next() { 
     rate := Rating{} 
     err = rows.Scan(&rate.MovieId, &rate.UserId, &rate.RatingId, &rate.Rating, &rate.Timestamp) 
     if err != nil { 
      return 
     } 
     r := RatingPK{} 
     r.Init(rate) 
     ratings = append(ratings, r) 
    } 

    defer rows.Close() 
    return 
} 
+0

私のfunc SearchUserRatingsでは何を置き換える必要がありますか?ありがとう – CodeL

+0

ここで私が提案した関数は、これに入力としてあなたの検索機能の結果を与えるかもしれない方法です。あなたの関数を更新します –

+0

initメソッドの変数結果は何ですか? – CodeL

0

は、ここでは、ネストされた構造体の使用方法を理解するのに役立ちます短い例だ次のようにあなたがループして行うことができます;)

package main 

import (
    "fmt" 
) 

type nameType struct { 
    firstName string 
    lastName string 
} 

type student struct { 
    name nameType 
    age int 
} 

func main() { 
    bob := student{nameType{"bob", "dope"}, 18} 

    fmt.Println(bob.name.firstName) 
} 

あなたがここにそれをテストすることができます;)

https://play.golang.org/p/ft9PGrlrrx

関連する問題