基于the RethinkDB replace() docs我正在尝试更改文档的主键。在这种情况下,主键是email
:
var renamePerson = function(originalEmail, newEmail, cb){
rethink.db(DATABASE).table(TABLE).get(originalEmail).replace({email: newEmail}).run(dbConnection, cb)
}
这应该有效,但unchanged
是1
,查找新文档似乎没有返回任何结果。
如何更改文档的主键?
答案 0 :(得分:0)
做了一些研究,我找到了this quote from the developers:
'我们不允许人们更改pkeys,他们必须删除并重新插入文档。'
基于此:
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只是一个插入doc的帮助函数,deletePerson将一个人标记为被删除)