Как удалить четырехугольник в dgraph с помощью dgo api.NQuad
Можно ли удалить все ребра, соответствующие предикату, из данного узла, используя api.NQuad
от github.com/dgraph-io/dgo/protos/api
?
Я пытаюсь достичь эквивалента delete {0x1234 <test.likes> * }
func TestDeleteQuad(t *testing.T) {
subject := "0x01"
ctx := context.TODO()
d, err := grpc.Dial(testEndpoint, grpc.WithInsecure())
if err != nil {
panic(err)
}
client := dgo.NewDgraphClient(api.NewDgraphClient(d))
txn := client.NewTxn()
defer txn.Discard(ctx)
if _, err := txn.Mutate(ctx, &api.Mutation{Del: []*api.NQuad{
&api.NQuad{
Subject: subject,
Predicate: "test.likes",
ObjectId: "*",
ObjectValue: nil,
},
}}); nil != err {
panic(err)
}
err = txn.Commit(ctx)
assert.NoError(t, err)
}
Я пытался с помощью "*"
""
x.Star
как ObjectId, но ни одно из этих решений не работает
1 ответ
Это довольно противоречиво, но чтобы удалить края, ObjectValue
должен быть использован вместо ObjectId
должен быть установлен в api.Value_DefaultVal
звезда:
func TestDeleteQuad(t *testing.T) {
subject := "0x01"
ctx := context.TODO()
d, err := grpc.Dial(testEndpoint, grpc.WithInsecure())
if err != nil {
panic(err)
}
client := dgo.NewDgraphClient(api.NewDgraphClient(d))
txn := client.NewTxn()
defer txn.Discard(ctx)
if _, err := txn.Mutate(ctx, &api.Mutation{Del: []*api.NQuad{
&api.NQuad{
Subject: subject,
Predicate: "test.likes",
ObjectValue: &api.Value{&api.Value_DefaultVal{x.Star}}, // <- this
},
}}); nil != err {
panic(err)
}
err = txn.Commit(ctx)
assert.NoError(t, err)
}