无法在Golang中对RethinkDB运行过滤器。

huangapple go评论78阅读模式
英文:

Unable to run filter on RethinkDB in Golang

问题

我正在尝试在Golang中使用GoRethink库对RethinkDB数据的嵌套属性运行过滤器。

但是,我遇到了这个错误:

> gorethink: 无法将OBJECT转换为SEQUENCE: r.DB("uc_dev").Table("unverified_requests").Filter(func(var_‌​5 r.Term) r.Term { return var_5.Field("user").Map(func(var_6 r.Term) r.Term { return var_6.Field("email") }).Eq("myemail@gmail.com") })

这是我的代码:

type User struct {
    Id        string `json:"id,omitempty"`
    FirstName string `json:"firstName,omitempty"`
    LastName  string `json:"lastName,omitempty"`
    Email     string `json:"email,omitempty"`
    Password  string `json:"password,omitempty"`
    Salt      string `json:"salt,omitempty"`
}

type UnverifiedUserRequest struct {
    Id    string `json:"id,omitempty"`
    Token string `json:"token,omitempty"`
    User  User   `json:"user,omitempty"`
}

db.Table("unverified_requests").Filter(func(row r.Term) r.Term {
    return row.Field("user").Map(func(user r.Term) r.Term {
        return user.Field("email")
    }).Eq(email)
}).Run(session)
英文:

I am trying to run a filter on a nested property of RethinkDB data in Golang using GoRethink library.

But, I am getting this error:

> gorethink: Cannot convert OBJECT to SEQUENCE in: r.DB("uc_dev").Table("unverified_requests").Filter(func(var_‌​5 r.Term) r.Term { return var_5.Field("user").Map(func(var_6 r.Term) r.Term { return var_6.Field("email") }).Eq("myemail@gmail.com") })

Here is my code:

type User struct {
    Id        string `json:"id,omitempty"`
    FirstName string `json:"firstName,omitempty"`
    LastName  string `json:"lastName,omitempty"`
    Email     string `json:"email,omitempty"`
    Password  string `json:"password,omitempty"`
    Salt      string `json:"salt,omitempty"`
}

type UnverifiedUserRequest struct {
    Id    string `json:"id,omitempty"`
    Token string `json:"token,omitempty"`
    User  User   `json:"user,omitempty"`
}

db.Table("unverified_requests").Filter(func(row r.Term) r.Term {
    return row.Field("user").Map(func(user r.Term) r.Term {
        return user.Field("email")
    }).Eq(email)
}).Run(session)

答案1

得分: 1

基本上,这是我需要做的事情:

result, err = db.Table("unverified_requests").Filter(func(uu r.Term) r.Term {
    return uu.Field("user").Field("email").Eq(email)
}).Run(session)
英文:

Basically, here is what I needed to do:

result, err = db.Table("unverified_requests").Filter(func(uu r.Term) r.Term {
    return uu.Field("user").Field("email").Eq(email)
}).Run(session)

答案2

得分: 0

你正在尝试对单个对象进行映射。也许这样可以工作:

db.Table("unverified_requests").Filter(r.Row.Field("user").Field("email").Eq(email)).Run(session)
英文:

You're trying to map over a single object. Maybe this would work:

db.Table("unverified_requests").Filter(r.Row.Field("user").Field("email").Eq(email)).Run(session)

huangapple
  • 本文由 发表于 2016年12月13日 08:59:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/41112155.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定