Подтвердить что ты не робот

Какова причина убийства для использования Mongoose ORM?

Я использую его с новым проектом, но я также впервые использую MongoDB. Определение схемы кажется ненужным, потому что я думал, что потенциал монго заключается в том, что ему не нужны определенные схемы. Не могу я просто сохранить объекты на лету независимо от схемы? Тогда зачем мне это хотеть? Кроме того, документация отсутствует, что делает некоторые вещи, которые я могу легко сделать в оболочке mongo более жестко, чем они должны быть.

4b9b3361

Ответ 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 заключалась в том, чтобы сделать ее безопасной и облегчить техническое обслуживание, но на самом деле не подходит для базы данных на основе документов.