【发布时间】:2017-05-28 08:33:35
【问题描述】:
我对 golang 上的 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
}
...
【问题讨论】:
-
与你的问题无关,但你应该试试代码格式化工具:blog.golang.org/go-fmt-your-code
-
@Alex 我可以建议添加更多信息,例如:任何错误消息以及预期结果是什么。