«Хранение» схемы / модели Mongoose (не документа) для будущего использования - PullRequest
3 голосов
/ 26 декабря 2011

Проблема: Я создаю веб-сервис, который позволяет разработчикам «регистрировать» свои схемы Mongoose - они будут создавать JSON-схемы в браузере, которые затем будут AJAX добавляться на мой сервер.

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

У меня есть код, который выполняет что-то вроде:

/* schemaObj is what you create a schema with,
   for example { name: String, id: Number } */

registerSchema = function(model_name, schemaObj) {
    desiredSchema = new Schema(schemaObj);
    desiredCollection = 'collection_' + model_name;
    mongoose.model(desiredCollection, desiredSchema, desiredCollection);
}

Итак, это создало для нас модель с пользовательской схемой.

Теперь моя проблема в том, что после запуска этого кода создайте модель, а затем перезапуститесервер, новая коллекция / модель не будет существовать - потому что, очевидно, коллекция создается только при сохранении документа - и я не хочу сейчас сохранять документ (потому что у меня его нет), просто создайтеколлекция.

Вопрос: Есть ли способ создать коллекцию с этой «фиксированной» схемой, чтобы будущие документы, которые будут вставлены, должны строго соответствовать схеме?Я в основном ищу что-то вроде create table в SQL.

Ответы [ 2 ]

3 голосов
/ 26 декабря 2011
  1. Вы не можете создать коллекцию с фиксированной схемой в Mongo.Это явно функция .
  2. Пока вы зарегистрировали новую схему в Mongoose, прежде чем пытаться ее использовать, она должна работать нормально, независимо от того, существует коллекция.
  3. Схемы Mongoose в любом случае только принудительно применяются, но вы все равно можете красться, переходя к собственному драйверу, что действительно легко.Whatever.collection.insert
  4. Вам необходимо перерегистрировать свои схемы КАЖДЫЙ РАЗ, когда вы запускаете сервер
0 голосов
/ 20 января 2012

Я также работаю над приложением, подобным вашему, где пользователи могут создавать свои схемы, которые затем автоматически загружаются в Mongoose. Я создал функцию, которая проверяет, загружена ли схема в Songoose перед ее использованием, и если она не загружена (например, после перезапуска приложения), она загружает ее.

У меня еще нет документации, но вы можете найти мою реализацию в этом файле jslModel.js . Искать function loadMongooseModel.

...