2016-09-16 6 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) 
} 

Это должно работать, но unchanged является 1, и глядя на новый документ, кажется, не дал никаких результатов.

Как изменить первичный ключ документа?

ответ

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 отмечает лицо, как удаляется)

Смежные вопросы