2016-09-16 8 views
1

the RethinkDB replace() docsに基づいて文書の主キーを変更しようとしています。この場合、主キーはemailです:rethinkdb文書の主キーを変更するにはどうすればよいですか?

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

これは動作するはずですが、unchanged1で、新しいドキュメントを検索すると、結果を返していないようです。

ドキュメントの主キーを変更するにはどうすればよいですか?いくつかの研究を行う

答えて

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は、ドキュメントを挿入するだけのヘルパー関数で、deletePersonが削除されているものとして人をマーク)

関連する問題