【问题标题】:How do I change the primary key in a rethinkdb document?如何更改 rethinkdb 文档中的主键?
【发布时间】:2016-09-16 09:48:06
【问题描述】:

基于the RethinkDB replace() docs 我正在尝试更改文档的主键。在这种情况下,主键是email

var renamePerson = function(originalEmail, newEmail, cb){
    rethink.db(DATABASE).table(TABLE).get(originalEmail).replace({email: newEmail}).run(dbConnection, cb)
}

这应该可以,但是unchanged1,并且查找新文档似乎没有返回任何结果。

如何更改文档的主键?

【问题讨论】:

    标签: primary-key rethinkdb


    【解决方案1】:

    做了一些研究,我发现this quote from the developers

    '我们不允许人们更改 pkey,他们必须删除并重新插入文档。'

    基于此:

    var renamePerson = function(originalEmail, newEmail, cb){
        runningDatabase.getPersonByEmail(originalEmail, function(err, person){
            if ( err ) {
                log('Error finding person to rename', err)
                cb(err)
                return
            }
            person.email = newEmail;
            createPersonRaw(person, function(err, createdPerson){
                if ( err ) {
                    log('>>> Err creating new document for renamed person', err)
                    cb(err)
                    return
                }
                deletePerson(originalEmail, cb)
            })
        })
    }
    

    (createPersonRaw 只是一个插入文档的辅助函数,deletePerson 将一个人标记为被删除)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      相关资源
      最近更新 更多