Хотя комментарии Бенса верны, (это то, как вы это делаете), я хотел заметить, что ошибка, которую вы получаете, заключается в том, что здесь отсутствует скобка: "users_by_email" ) , "me@example.com "
Ошибка логична, если вы знаете, что Index принимает необязательную ссылку на базу данных в качестве второго аргумента.
Чтобы уточнить, что сказал Бен: если вы сделаете это, вы получите еще одну ошибку:
Update(
Match(
Index("accounts_by_email"), "test@test.com"
),
{ data: { email: "test2@test.com"} }
)
Поскольку Match потенциально может вернуть более одного элемента. Он возвращает набор ссылок, называемых SetRef. Думайте о setrefs как о списках, которые еще не материализованы. Если вы уверены, что есть только одно совпадение для этого электронного письма (например, если вы установили ограничение уникальности), вы можете материализовать его, используя Paginate или Get: Get:
Update(
Select(['ref'], Get(Match(
Index("accounts_by_email"), "test@test.com"
))),
{ data: { email: 'test2@test.com'} }
)
Get возвращает полный документ, нам нужно указать, что нам требуется ссылка с помощью Select (['ref'] ..
Paginate:
Update(
Select(['data', 0],
Paginate(Match(
Index("accounts_by_email"), "test@test.com"
))
),
{ data: { email: "testchanged@test.com"} }
)