Go Gremlin addV()返回;无效的请求参数";

Go Gremlin addV()返回;无效的请求参数";,go,gremlin,janusgraph,gremlin-server,Go,Gremlin,Janusgraph,Gremlin Server,以下测试失败,因为从JanusGraph 0.4返回的错误无效请求参数,后端为cassandra 3.11: consturl=“ws://localhost:8182/gremlin” var目标*DocumentGraph func TestMain(m*testing.m){ 变量错误 目标,err=NewDocumentGraph(url) 如果错误!=零{ fmt.Printf(“初始化小精灵群集失败:%v\n”,错误) 操作系统退出(1) } 操作系统退出(m.Run()) } fu

以下测试失败,因为从JanusGraph 0.4返回的错误
无效请求参数
,后端为cassandra 3.11:

consturl=“ws://localhost:8182/gremlin”
var目标*DocumentGraph
func TestMain(m*testing.m){
变量错误
目标,err=NewDocumentGraph(url)
如果错误!=零{
fmt.Printf(“初始化小精灵群集失败:%v\n”,错误)
操作系统退出(1)
}
操作系统退出(m.Run())
}
func TestDocumentGraph_CreateFromJSON(t*testing.t){
数据:=`{
“标签”:“内联”,
“标记名”:“img”,
“键”:“内联_VMJC8GGHQJJMVB”,
“属性”:{
“alt”:“,
“边框”:“0”,
“高度”:“1”,
“src”:"http://links.transactions.overstock.com/wf/open?upn=lvH1F6JqxvnN0PAh3-2B8DWHCc6xqkDFpMVqX-2F-2F5xEHnOuk56mqNJgyKTEH4WKg1ov-2NUWLIFWI7L8-2B268R5AHIsziCbIAIfk3yJkj4St6VLbMb7KSBbacUm0cOuk-2BBC8AU42HQ0QVVV5RJQOP1KHZVBQTNTPLRGSHQP4QBF-2BrGwE-2BUIFILR37X2H8H8QQQQGDB6BRQBQBQQBQBQBQBQBQBQBQBQBQBQBQBQBQBQBQBQBQBQBQBJUIFLUY2BUILJJJJ7H7H7H7H7H7H72)2)2)2)2(2)2(2)2(2)2(2)2(2)2(2)2(2)2)2(2)2(2)2)2(2)2(2)2)2(2)2)2(2)2)2(2)2)2(2)2)2(2)2(2)2)2(2)2)2(2)2)2(2)2)2)2)2)2(2)2)2)2)2)2)2)2)2(2)2)2)2)2)2)2)2(2)2)2)2)2)2)2(2)2)2)2)2)2)2)2(2(2)2)2)2)2)2)2)2)2)2)2)2(2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2)2 QQUW4K0VxLYI6PBHN-2Bo6NaKDM6-2BJEAAGULUQLMDDNGW6D0TXE4V8BDYXJTBKPVCS9VWHZPYCXQ-3D-3D“,
"style@border-宽度“:“0!重要”,
"style@height“:“1px!重要”,
"style@margin-底部“:“0!重要”,
"style@margin-左“:“0!重要”,
"style@margin-右“:“0!重要”,
"style@margin-顶部“:“0!重要”,
"style@padding-底部“:“0!重要”,
"style@padding-左“:“0!重要”,
"style@padding-右“:“0!重要”,
"style@padding-顶部“:“0!重要”,
"style@width“:“1px!重要”,
“宽度”:“1”
}
}`
v:=&顶点{
子项:make([]*顶点,0),
}
如果err:=JSON.Unmarshal([]字节(数据),v);err!=nil{
t、 Fatalf(“未能解组测试json数据:%v”,错误)
}
如果错误:=target.createVertex(v);错误!=nil{
t、 Errorf(“未能创建顶点:%v”,错误)
}
}
奇怪的是,如果我删除任何2个
属性
,它就可以正常工作。我知道gremlin不受14个
属性
语句的限制,因为我从控制台运行了一个超过17个的语句,所以发生了什么

编辑:如果我从属性值中删除参数,只发送查询而不发送任何有效的参数,那么查询的参数数量是否有限制

以下是相关代码:

类型顶点结构{
ID int64`json:“ID,empty”`
父*顶点
子项[]*顶点
标签字符串`json:“标签,省略空”`
标记名字符串`json:“标记名,省略空”`
Key string`json:“Key,empty”`
属性映射[string]string`json:“属性”`
}
类型DocumentGraph结构{
graph*gremlin.Client
}
func NewDocumentGraph(url字符串)(*DocumentGraph,错误){
g、 错误:=gremlin.NewClient(url)
如果错误!=零{
返回nil,fmt.Errorf(“未能创建gremlin客户端:%v”,错误)
}
返回和文档图{
图:g,
},零
}
func(d*DocumentGraph)createVertex(v*顶点)错误{
变量(
labelParam=“labelName”
keyParam=“docKey”
)
var q strings.Builder
p:=gremlin.Bind{
标签参数:v.标签,
keyParam:v.Key,
}
q、 WriteString(fmt.Sprintf(`g.addV(%s).as(%s).property(“document_key”,%s)`,labelParam,keyParam,keyParam))
对于k,v:=范围v.属性{
pname:=strings.ReplaceAll(strings.ReplaceAll(k,`-`,``u`)、`@`、`u at`)
q、 WriteString(fmt.Sprintf(`.property(%q,%s)`,k,pname))
p[pname]=v
}
对于i,c:=范围v.儿童{
q、 WriteString(fmt.Sprintf(`.V(id_%d).addE(“父”).to(%s)`,i,keyParam))
p[fmt.Sprintf(“id_u%d”,i)]=c.id
}
//终端步骤将触发批处理写入所有内容
q、 WriteString(fmt.Sprintf(“.select(%s).valueMap(true)”,keyParam))
//读取id的结果
req:=gremlin.Query(q.String()).Bindings(p)
b、 _u:=gremlin.GraphSONSerializer(需要)
数据,错误:=d.graph.Exec(req)
如果错误!=零{
返回fmt.Errorf(“未能为查询创建顶点:%s:%v”,b,err)
}
fmt.Printf(“已成功创建顶点:%s\n”,b)
归零
}

你在使用什么Go-library for Gremlin?你提到cassandra…你的意思是你在使用JanusGraph吗?我在使用
github.com/Go-Gremlin/Gremlin
是的,我的意思是说我在使用JanusGraph和cassandra后端。我对该库不是很熟悉,也不是说作为一种语言,但就我所知和所知已经超过了您正在使用的库。除非您有使用它的理由,否则您可能会考虑切换到其中的一个。是否还有更多的错误可以与您共享?可能是服务器控制台输出/日志中的一些东西?它可能会提供什么“无效请求参数”的更好提示。是指。我对所有这些都不熟悉,所以到目前为止,我能找到的唯一日志是我在运行
docker logs
时看到的,我在那里什么也看不到。我将查看其他库。我能够通过不使用参数来克服这个问题,所以短期内我很好,但我仍然好奇为什么会发生这个错误。