首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >go - Merge in Go RethinkDB

go - Merge in Go RethinkDB
EN

Stack Overflow用户
提问于 2016-03-29 14:29:06
回答 2查看 209关注 0票数 0

我一直在努力适应Merge of gorethink (RethinkDB的Go驱动程序)。

代码语言:javascript
运行
复制
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)

我有三个集合:articlequoteuser

有了上述职能,我打算:

  • 用idUser查询所有引号文档
  • 对于我得到的每个引号,我想使用它各自的idArticle字段在文章集合中进行查询。
  • 在使用idArticle获得适当的文档之后,我使用它来查询文档的关键字字段
  • 最后,我将关键字数组合并到每个引用文档中。

在用于JavaScript的RethinkDB API中,我实现了如下所示:

代码语言:javascript
运行
复制
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();
        });
    }

但我还是没能在重新思考中做到这一点。如何获得Term row.Field("idArticle")的值,并将其用于以后的查询和Merge

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-30 03:23:41

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

真正的答案是:

代码语言:javascript
运行
复制
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)中惊慌了

票数 0
EN

Stack Overflow用户

发布于 2016-03-29 23:03:42

https://github.com/dancannon/gorethink/issues/291抄袭我的答案

您应该能够在不调用Run的情况下通过使用子查询来转换JS查询。例如:

代码语言:javascript
运行
复制
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"),
        },
    }
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36287265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档