Я использую его с новым проектом, но я также впервые использую MongoDB. Определение схемы кажется ненужным, потому что я думал, что потенциал монго заключается в том, что ему не нужны определенные схемы. Не могу я просто сохранить объекты на лету независимо от схемы? Тогда зачем мне это хотеть? Кроме того, документация отсутствует, что делает некоторые вещи, которые я могу легко сделать в оболочке mongo более жестко, чем они должны быть.
Какова причина убийства для использования Mongoose ORM?
Ответ 1
Самое лучшее в Mongoose для MongoDB - это то, что вы можете иметь встроенную автоматическую проверку данных, которые вы вставляете/обновляете. Mongoose также дает вам возможность заранее определить события, чтобы произойти, скажем, до того, как документ будет сохранен. Это очень мощно, потому что он объединяет код, который вам нужно написать, и он размещает этот код, где он должен быть рядом с логикой документа, а не в логике приложения.
Просмотрите middleware и проверьте некоторые примеры. alexyoung/Nodepad on Github имеет несколько хороших примеров в файле models.js.
Ответ 2
Знание заранее определенной схемы может быть удобно, потому что тогда вы можете сделать предположения, которые вы в противном случае могли бы не выполнить.
Например, если у меня есть схема Post
, то я могу предположить, что она имеет поле body
и использует ее как String
без проверки ее существования.
Конечно, даже на моей четко определенной модели я могу иметь эквивалент документа, содержащего схему, внутри него, например.
mongoose.model('Post', new Schema({
body: String,
meta: {}
}));
а затем я могу просто добавить случайные данные в myPost.meta по своему усмотрению. Это обеспечивает очень хороший баланс для меня между определенной схемой и схемой.
Ответ 3
Вы можете пойти в любом случае. Есть много популярных карт для MongoDB на многих других языках: Morphia для Java, Doctrine for PHP, Mongoid/Mongomapper для Ruby и т.д.
Несмотря на то, что MongoDB "без схемы", он не "без схемы". Там что-то нужно сказать о знании, что ожидать от выхода из БД.
Конечно, также есть что-то вроде элегантности в создании специального объекта и его сохранении. На данный момент node.js является очень новым, и, вероятно, лучше всего работать с тем, что вам нравится.
Кроме того, документация отсутствует, что делает некоторые вещи, которые я могу легко сделать в оболочке mongo, тогда они должны быть.
Mongoose все еще является проектом сообщества, и он относительно новый. Если документы отсутствуют или вам нужно писать, я уверен, что команде разработчиков понравится помощь. Вероятно, вы можете связаться с ними в группах.
Ответ 4
Я использовал Mongoose, и я должен сказать, что полностью согласен с тем, что определение вашей схемы заранее серьезно ограничивает MongoDB. Идея Mongoose заключалась в том, чтобы сделать ее безопасной и облегчить техническое обслуживание, но на самом деле не подходит для базы данных на основе документов.