【问题标题】:Rethinkdb replace with getAllRethinkdb 用 getAll 替换
【发布时间】:2016-01-26 03:45:37
【问题描述】:

我有一个用户表,每一行如下所示:

{
  id: <user's id>,
  email: <user's email>
}

其中id 是主键,email 有一个二级索引。

我只想在没有其他用途的情况下添加一个用户。通常我会为此使用两个查询:getAll(&lt;user's email&gt;, {index: 'email'}) 以确保不接收电子邮件,然后是 insert({email: &lt;user's email&gt;},但这是两个单独的查询(即不是原子操作)。

有没有办法使用getAll 原子地检查和设置?

注意:我知道get 可以做到这一点,如here 所示,但这不适用于getAll

【问题讨论】:

    标签: rethinkdb rethinkdb-javascript


    【解决方案1】:

    很遗憾,您不能对二级索引进行原子操作。最好的办法可能是添加另一个emails 表,其中主键是电子邮件地址。

    【讨论】:

    • 鉴于此用例几乎无处不在,这里的最佳做法是什么?
    • 我认为最好的做法是单独的emails 表,其中电子邮件作为主键,用于强制唯一性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2016-08-04
    • 2016-01-04
    相关资源
    最近更新 更多