Я хочу создать новый документ, если он не существует, и вернуть новый документ после его создания, однако если документ уже существует Я хотел бы, чтобы исключение было брошено.Как создать новый документ «если не существует» и вернуть новый документ с помощью встроенного драйвера MongoDB NodeJS
Я думаю, что способ, которым я занимаюсь этим, кажется хакерским, есть ли лучшее средство для этого?
var query = { name: 'guaranteed to be unique' }
var new_doc = { ... }
var col = // the Mongo collection we're using
col.updateOne(
query,
new_doc,
{upsert: true}
)
.then(update => col.findOne({_id, update.result.upserted.pop()._id}))
.then(doc => console.log(doc))
.catch(exception => console.log('that already exists'))
Зависит, если вы хотите обновить его, если он существует? Если это так, вы можете просто использовать '{upsert: true}' on 'update'. В противном случае вы сделали это правильно. –
Почему бы не создать уникальный индекс в 'name'? – robertklep
@robertklep, не могли бы вы объяснить, как уникальный индекс разрешит это? – MatUtter