Не уверен, что вы уже разобрались с этим, но на случай, если вы не хотите столкнуться с проблемами с уникальными ключевыми ограничениями, такими как Мустафа, упомянутый выше, я сделал это с помощью findByIdAndUpdate:
// 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»), ни нулевым значением (потому что мангуст, похоже, выводит идентификатор нового документа из того, который вы запрашиваете). В этом случае я создаю новый ObjectId, что приведет к пропущенному запросу, и, следовательно, создам новый документ с этим идентификатором, поскольку я передаю {upsert: true}.
Кажется, это решило проблему для меня.
person
Hannes Johansson
schedule
23.10.2012