У меня есть .itemId
, полученный от третьей стороны, созданный не мной.
Мне нужно найти его в БД и обновить или вставить, если он не существует.
Я попытался использовать этот пример из поваренной книги: https://www.rethinkdb.com/docs/cookbook/javascript/#manipulating-documents
const res = await this.r.table('products').filter({itemId: item.itemId})
.limit(1)
.replace(doc => {
return this.r.branch(
doc.eq(null),
this.r.expr(item).merge({created_at: this.r.now()}),
doc.merge(item).merge({updated_at: this.r.now()})
)
}, {
returnChanges: true
}).run(this.conn);
if (res.replaced) {
return res.changes[0].new_val;
} else {
return item; // doc was never inserted as everything in `res` is `0`.
}
res.changes
не определено, если документ не существует и если я ищу идентификатор после того, как его нет в базе данных. Он так и не был вставлен.
Есть ли способ упростить команду upsert()
с учетом произвольного свойства объекта?