2015-07-16 3 views
1

Форма настроек - хороший пример.Mongoose: Обновление некоторых/всех полей в коллекции Mongodb

Внести, соответствующая коллекция должна быть обновлена; и 1, некоторые, все или все поля должны быть обновлены.

Предполагая, что я не ошибаюсь, Mongoose:

  • Игнорирует поля, которые не определены в схеме.
  • Выполняет некоторую низкоуровневую проверку в поле на основе схемы (т. Е. Отклоняет (игнорирует?) Значение, которое не соответствует типу).

Значит, это означает, что следующее: целесообразно?

.put(function(req, res, next) { 
    if (mongoose.Types.ObjectId.isValid(req.params._id)) { 
    Collection.update({_id: req.params._id}, { $set: req.body}, function (err, collection) { 
     if (err) return next(err); 
     res.send(200, {success: true}); 
    }) 
    }else{ 
    res.send(400, {success: false}); 
    } 
}) 

Передача req.body непосредственно в обновлении?

Это, безусловно, работает, но я не могу не чувствовать, что он мало нуждается в проверке/фильтрации? Является ли мангуста достаточным в своей схеме для такого подхода? Или я должен выполнять итерацию по каждому ожидаемому полю?

Я с удовольствием создаю несколько тестов, но думал, что я проверил бы с сообществом и проверил бы мой подход - любые предложенные альтернативы с благодарностью получили.

ответ

0

Как это бывает, это было бы ужасной практикой, поскольку Collection.update обходит проверку Mongoose, поэтому два предположения, которые я делал, являются ложными в этом случае.