为了账号安全,请及时绑定邮箱和手机立即绑定

go - 在 Go RethinkDB 中合并

go - 在 Go RethinkDB 中合并

Go
交互式爱情 2021-12-27 18:03:34
我一直在努力去适应Merge的gorethink(RethinkDB在围棋驱动程序)result,err:=r.Table("quote").GetAllByIndex("idUser",idUser).        OrderBy(r.Desc("created_at")).Merge(func(row r.Term) interface{}{            res,_:=r.Table("article").Get(row.Field("idArticle")).Run(session)            // TODO            return map[string]interface{}{                // TODO            }        }).Run(session)我有3个类别:article,quote,和user通过上述功能,我打算:通过idUser查询所有报价文件对于我得到的每个报价,我想使用其各自的 idArticle 字段在文章集合中进行查询使用 idArticle 获取适当的文档后,我使用它来查询该文档的关键字字段最后,我将关键字数组合并到每个报价文档中在 RethinkDB 的 JavaScript API 中,我是这样实现的:findAllByUser = function(idU){        return r.table(table)        .filter({idUser: idU})        .orderBy(r.desc('created_at'))        .merge(function(quote){            var article = r.table('article').get(quote('idArticle'));            return {                tags: {keywords: article('keywords')}            }        })        .run(connection)        .then(function(result){            return result.toArray();        });    }但我仍然没有设法在 gorethink 中做同样的事情。如何获取 的值Term row.Field("idArticle")并将其用于以后的查询和Merge?
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

从https://github.com/dancannon/gorethink/issues/291复制我的答案


您应该能够通过使用子查询将您的 JS 查询转换为 Go,而无需调用Run. 例如:


r.Table(table)

.Filter(map[string]interface{}{"idUser": idU})

.OrderBy(r.Desc("created_at"))

.Merge(func(quote r.Term){

    article := r.Table("article").Get(quote.Field("idArticle"))

    return map[string]interface{}{

        "tags": map[string]interface{}{

            "keywords": article("keywords"),

        },

    }

})


查看完整回答
反对 回复 2021-12-27
?
四季花海

TA贡献1811条经验 获得超5个赞

非常感谢你。我设法解决了恐慌的错误


正确答案是:


result,err:=r.Table("quote").Filter(r.Row.Field("idUser").Eq(idUser)).

        OrderBy(r.Desc("created_at")).

        Merge(func(quote r.Term) interface{}{

            fmt.Println(quote.Field("idArticle"))

            article:=r.Table("article").Get(quote.Field("idArticle"))

            return map[string]interface{}{

                "tags":map[string]interface{}{

                    "keywords":article.Field("keywords"),

                },

            }

        }).

        Run(config.Connection())

由于昨晚对游标结果返回地址的声明,我感到恐慌:它是: var all map[string]interface{} 虽然它应该是: var all []interface{} 然后它恐慌了err=result.All(&all)


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信