Как я могу выполнить атомный upsert в RethinkDB? Например, таблица с URL-адресами (id) и количеством кликов (количество). Согласно документации, которую я должен использовать {конфликт: «обновление»}, поэтому я попытался следующее:RethinkDB atomic upsert
r.db('test').table('urls').insert({
id: 'google.com',
count: r.row('count').add(1).default(1),
// ... lots of other fields ...
}, {
conflict: 'update'
});
Это возвращает ошибку r.row is not defined in this context
. Я видел проблему в своем реестре github, где danielmewes предложили .get(...).replace(...)
, чтобы достичь этого, но не стоило бы заменить весь документ, чтобы обновить поле? Я мог бы использовать get
, а затем update
или insert
, если он не существует, но это может привести к состоянию гонки, так как в этой таблице будет много процессов. Спасибо за помощь!