Golang Rethinkdb вложенный фильтр
Я пытаюсь запустить фильтр для свойства вложенного объекта для RethinkDB в Голанге. Но я уверен, что мне чего-то здесь не хватает.
Это ошибка, которую я получаю:
(литерал func).Eq не определено (тип func (gorethink.Term) gorethink.Term не имеет поля или метода Eq)
Вот мой код:
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
После внесения изменений, как предложено @icza, программа работает нормально. Но я получаю следующую ошибку во время выполнения:
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") })
1 ответ
Неверная скобка. Вместо }.Eq(email))
использование }).Eq(email)
:
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)
Вы пытались позвонить Eq()
на литеральном аргументе функции, который передается Map()
, Это явно не типа gorethink.Term
, но возвращаемое значение gorethink.Map()
есть, так что звоните Eq()
на возвращаемую стоимость Map()
, что означает положить .Eq()
после скобки, закрывающей вызов метода Map()
,