Jak tworzyć unikalne elementy w RethinkDB?Jak tworzyć unikalne elementy w RethinkDB
W MongoDB użyłem ensureIndex
do tego, np:
userCollection.ensureIndex({email:1},{unique:true},function(err, indexName){
Jak tworzyć unikalne elementy w RethinkDB?Jak tworzyć unikalne elementy w RethinkDB
W MongoDB użyłem ensureIndex
do tego, np:
userCollection.ensureIndex({email:1},{unique:true},function(err, indexName){
RethinkDB obecnie nie obsługuje wyjątkowość ograniczenia w dziedzinach innych niż klucz podstawowy.
Można użyć tabeli pomocniczej, w której unikalne pole jest przechowywane jako klucz podstawowy, aby jednoznacznie sprawdzić unikalność w aplikacji.
Stosunkowo łatwą alternatywą byłoby użycie wtórnego indeksu. W ten sposób nie miesza się z tabelami pomocniczymi.
Możesz wykonać kontrolę swojego wniosku za pomocą metody get_all
(http://rethinkdb.com/api/#js:selecting_data-get_all).
Problem polega na tym, że nie można tego zrobić atomowo. To znaczy. między czasem, w którym sprawdzasz indeks wtórny i okazuje się, że klucz nie istnieje, a czasem, w którym faktycznie wstawiasz dokument, ktoś inny może wstawić dokument z tym samym kluczem. –
Ten link jest uszkodzony. Nie mam nic przeciwko, jeśli to nie jest gauranteed atomowy - ale czy możesz podać przykładowy kod? – chovy
Dziękuję bardzo! Zasadniczo chciałbym, aby jedno pole było unikalne. Jeśli uda mi się rozwiązać to z PrimaryKey, to jest dla mnie ok! – daslicht
Czy to nadal najlepsze rozwiązanie? Zostało to opublikowane 3 lata temu. – chovy
@chovy prawdopodobnie, wydaje mi się, że zdecydowali się na unikatowe klucze pomocnicze, aby uniknąć tego rodzaju błędu, jak w MongoDB, pozwalając na unikalne klucze drugorzędne, ale nie gwarantując ich unikalności w całym shardzie. – Andy