Не уверен, что вы уже поняли это, но в случае, если вы не хотите столкнуться с проблемами с уникальными ключевыми ограничениями, такими как Mustafa, упомянутый выше, я сделал это с помощью findByIdAndUpdate mongoose:
// require mongoose
client_id = req.param("client_id") ? new mongoose.Types.ObjectId
client =
name: req.param "clientName"
status: 'active'
Client.findByIdAndUpdate client_id, client, {upsert: true}, (err, updRes) ->
if err
res.json
error: "Couldn't create client"
else
res.json client
Я никогда не писал CoffeeScript, так что извините, если какой-то из этих синтаксисов неверен, но я думаю, что должно быть довольно очевидно, что я пытаюсь сделать.
Следует отметить, что вам нужно убедиться, что client_id не является ни пустой строкой (поскольку это приведет к ошибке 'Invalid ObjectID'), ни нулевой (поскольку mongoose, по-видимому, выводит идентификатор нового документа из того, который выЗапрашиваем)В этом случае я создаю новый ObjectId, который приведет к тому, что запрос будет пропущен, и, следовательно, создаю новый документ с этим идентификатором, поскольку я передаю {upsert: true}.
Это, похоже, решило проблему дляя.