我在我的一个应用程序中使用 neo4j。如果找到值,则运行查询后,result.Next()返回一个bool var matches []int fmt.Println(result.Next(), "<== result NEXT ???") // 👈 this prints true if result.Next() { // 👇 for some reason this block won't run! fmt.Println("Assigning the values to the var") matches = result.Record().Values()[0].([]int) fmt.Println("Matches found", matches) }我非常感谢您的帮助,坚持了几个小时
1 回答

慕桂英3389331
TA贡献2036条经验 获得超8个赞
调用result.Next()继续到下一行。如果你调用它两次,你会跳过一行。result.Next()不是幂等的!如果你只有一个结果,调用result.Next(),第二个调用将永远不会返回true。
如果您需要result.Next()在多个位置检查结果,请将其存储在变量中:
var matches []int
hasNext := result.Next()
fmt.Println(hasNext, "<== result NEXT ???")
if hasNext {
fmt.Println("Assigning the values to the var")
matches = result.Record().Values()[0].([]int)
fmt.Println("Matches found", matches)
}
引用官方文档:消费结果:
for result.Next() {
list = append(list, result.Record().Values[0].(string))
}
如您所见,只需调用result.Next().
- 1 回答
- 0 关注
- 74 浏览
添加回答
举报
0/150
提交
取消