2
golangのgRPCサーバーストリームに問題があります。 私は1つの行で問題はありませんでしたが、私はちょうどそれに対して単純なgRPC応答を使用しました。 しかし、データベースからいくつかの行を送信する必要があり、サーバーストリームアプリケーションを終了できません。ゴランgRPCサーバーストリーム
私はちょうどGolangとgRPCを学びましたが、この作業は今この課題を解決するのが少し難しいです。ウェブ上でこの資料の例が多すぎないので、誰かがこれを手助けすることができれば非常に感謝します。 ここで、gRPC + golangを使用してデータベースからデータをストリーミングする方法の例を見つけることができます。
....
type record struct {
id int
lastname string
}
type server struct {
}
func (s *server) QueryData(city *pb.City, stream pb.GetDataStream_QueryDataServer) error {
db, err := sql.Open("postgres", "postgres://adresspass")
if err != nil {
log.Fatal(err)
}
defer db.Close()
rows, err := db.Query(`SELECT id, last_name FROM person WHERE city=$1`, city.City)
if err != nil {
log.Fatal(err)
}
var rs = make([]record, 0)
var rec record
for rows.Next() {
err = rows.Scan(&rec.id, &rec.lastname)
if err != nil {
return err
}
rs = append(rs, rec)
}
for _, onedata := range rs {
if err := stream.Send(onedata); err != nil {
return err
}
}
return nil
}
...
問題はありませんが、コードフォーマットツールを試すことをおすすめします。https://blog.golang.org/go-fmt-your-code – miltonb
@Alex @Alexは、たとえば次のような情報を追加することをお勧めします:エラー期待される結果が何であるかを示します。 – Mark