Я разрабатываю сайт на основе 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..
});
и, наконец, иметь основную схему настроек, чтобы покрыть их вместе и сохранить все эти документы в одной коллекции.
Я искал какое-то время, чтобы увидеть, есть ли какие-либо интересные материалы для чтения по этой теме, но мне не повезло - было бы неплохо, если бы вы могли опубликовать сообщение, если вы знаете об одном.