В чем причина использования Mongoose ORM? - PullRequest
20 голосов
/ 21 апреля 2011

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

Ответы [ 4 ]

20 голосов
/ 27 апреля 2011

Самое лучшее в Mongoose for MongoDB - это то, что у вас может быть встроенная автоматическая проверка данных, которые вы вставляете / обновляете.Mongoose также дает вам возможность заранее определять события, которые произойдут, скажем, до сохранения документа.Это очень мощный инструмент, поскольку он объединяет код, который вам придется написать, и размещает этот код там, где он должен находиться рядом с логикой документа, а не в логике приложения.

Извлечение промежуточное ПО и проверка для некоторых примеров.У alexyoung / Nodepad на Github есть несколько хороших примеров в файле models.js .

6 голосов
/ 21 апреля 2011

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

Например, если у меня есть схема Post, то я могу предположить, чтооно имеет поле body и использует его как String без проверки его существования.

Конечно, даже в моей четко определенной модели я могу иметь эквивалент документа без схемы, например

mongoose.model('Post', new Schema({
    body: String,
    meta: {}
}));

и тогда я могу очень просто добавить случайные данные в myPost.meta по своему усмотрению.Это обеспечивает мне очень хороший баланс между определенной схемой и схемой без схемы.

3 голосов
/ 22 апреля 2011

Вы действительно можете пойти любым путем.Существует множество популярных картографов для MongoDB на многих других языках: Morphia для Java, Doctrine для PHP, Mongoid / Mongomapper для Ruby и т. Д.

Несмотря на то, что MongoDB «без схемы», он не «без схемы»,Есть что-то, что можно сказать о знании того, что ожидать от БД.

Конечно, есть и что-то элегантное в создании специального объекта и его сохранении.На данный момент, node.js очень новый и, вероятно, лучше всего работать с тем, что вам нравится.

Также отсутствует документация, что делает некоторые вещи, которые я легко могу сделать в оболочке mongo, сложнее, чемони должны быть.

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

0 голосов
/ 21 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...