Ошибка подключения rpc с Golang и DGraph
Я пытаюсь внести мутацию в базу данных DGraph, но когда я запускаю код, он выдает следующую ошибку:
Ошибка rpc: код = недоступен desc = соединение закрывается, статус выхода 1
Я использую dGraph с докером в порту 8000, мой код golang здесь:
package main
import (
"fmt"
"context"
"encoding/json"
"log"
dgo "github.com/dgraph-io/dgo"
api "github.com/dgraph-io/dgo/protos/api"
grpc "google.golang.org/grpc"
)
type Person struct {
Name string `json:"name,omitempty"`
Lastname string `json:"lastname,omitempty"`
}
func main() {
conn, err := grpc.Dial("localhost:8000", grpc.WithInsecure())
if err != nil {
log.Fatal(err)
}
defer conn.Close()
dgraphClient := dgo.NewDgraphClient(api.NewDgraphClient(conn))
p := Person {
Name: "Giovanni",
Lastname: "Mosquera Diazgranados",
}
txn := dgraphClient.NewTxn()
ctx := context.Background()
defer txn.Discard(ctx)
pb, err := json.Marshal(p)
if err != nil {
log.Fatal(err)
}
mu := &api.Mutation{
SetJson: pb,
}
res, err := txn.Mutate(ctx, mu)
if err != nil {
fmt.Println("Aqui toy")
log.Fatal(err)
} else {
fmt.Println(res)
}
}
Как я могу решить эту ошибку, чтобы подключиться к моему DGraph и произвести мутацию?
2 ответа
Решение
Добро пожаловать в stackru!
Чтобы ваш код работал локально с "автономной" версией DGraph для докеров, мне пришлось изменить 2 вещи:
- использовать порт
9080
. Контейнер выставляет 3 порта:8000
,8080
,9080
. С помощью8080
или8000
Я получаю ту же ошибку, о которой вы упомянули. - использовать
v2
импорт. Не уверен, какая версия сервера DGraph у вас установлена, поэтому вам может не понадобиться это делать. Но если у вас новый сервер, вам понадобится этот импорт:
import (
dgo "github.com/dgraph-io/dgo/v2"
api "github.com/dgraph-io/dgo/v2/protos/api"
)
Порт
8000
предназначен для ratel-ui, который поставляется с dgraph. Чтобы внести изменения с помощью клиента dgraph go, вам нужно подключиться к открытому порту grpc-alpha, обычно это
9080
.