Хранение настроек приложения/сайта в mongodb с использованием mongoose

Я разрабатываю сайт на основе node.js, который уже успешно работает и использует mongodb в качестве внутреннего хранилища с помощью mongoose.

Дело в том, что я хочу реализовать некоторые настраиваемые параметры для сайта (которые должны быть настроены с помощью страницы /backend/).

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

var mongoose        = require('mongoose');

var SettingsSchema = new mongoose.Schema({
});

mongoose.model('Settimgs', SettingsSchema);

Могу ли я заставить схему иметь только один документ? Таким образом, я могу использовать приведенную выше схему только с одним документом и поместить туда все необходимые параметры.

Кроме того, я пришел с другой идеей, когда в коллекции settings-schema будет размещаться несколько документов, каждый из которых имеет свое уникальное имя раздела, как показано ниже, но тогда содержимое схемы для каждого раздела должно быть другим. Одна идея, с которой я пришел, заключается в том, чтобы просто сохранить json для конкретного раздела в качестве данных объекта, не сообщая подробности модели;

var mongoose        = require('mongoose');

var SettingsSchema = new mongoose.Schema({
    name: { type: String, lowercase: true, trim: true, unique: true, required: true },  // the settings section name
    ...
    JSON-Object or JSON-string here?
    Is {data: Object} a possible usage?
});

mongoose.model('Settimgs', SettingsSchema);

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

Итак, что я хотел бы иметь;

var BackendSchema = new mongoose.Schema({
.. backend related settings here..
});

var FrontendSchema = new mongoose.Schema({
.. frontend related settings here..
});

и, наконец, иметь основную схему настроек, чтобы покрыть их вместе и сохранить все эти документы в одной коллекции.

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


person HuseyinUslu    schedule 08.05.2015    source источник


Ответы (1)


Вы должны прочитать о дискриминаторах Mongoose здесь

Согласно документации

Дискриминаторы — это механизм наследования схемы. Они позволяют вам иметь несколько моделей с перекрывающимися схемами поверх одной и той же базовой коллекции MongoDB.

Я желаю, чтобы это помогло вам

person Veldars    schedule 27.02.2019