gpt4 book ai didi

go - 如何使用 dgo api.NQuad 删除 dgraph 中的四边形

转载 作者:IT王子 更新时间:2023-10-29 02:09:24 24 4
gpt4 key购买 nike

是否可以使用 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,但这些解决方案均无效

最佳答案

这很违反直觉,但是要删除边,必须使用 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)
}

关于go - 如何使用 dgo api.NQuad 删除 dgraph 中的四边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51763284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com