使用mongoose在mongodb中存储应用/站点设置

Hus*_*slu 8 mongoose

我一直在开发一个已经成功运行的基于node.js的站点,它使用mongoose作为后端存储使用mongodb.

问题是,我想为站点实现一些可配置的设置(应该能够使用/ backend/page进行配置).

所以我想找到一种方法来使用猫鼬存储所有这些设置但是我没有找到适合该事物的模式.

var mongoose        = require('mongoose');

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

mongoose.model('Settimgs', SettingsSchema);
Run Code Online (Sandbox Code Playgroud)

反正我是否可以强制架构只有一个文档?所以我可以只使用一个文档使用上面的模式,并将所有必需的设置放在那里.

除了我的另一个想法,设置架构集合将托管多个文档,每个文档的唯一部分名称如下,但每个部分的架构内容应该不同.我带来的一个想法就是将特定于章节的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);
Run Code Online (Sandbox Code Playgroud)

但是,如果我能找到一种方法来定义部分的模型,它将会更好和可测试 - 就像后端设置的模型和前端设置的另一个模型一样,应该以某种方式存储在Settings集合中.

所以我想拥有的是;

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

var FrontendSchema = new mongoose.Schema({
.. frontend related settings here..
});
Run Code Online (Sandbox Code Playgroud)

最后有一个主设置架构来覆盖这些并将所有这些文档保存到单个集合中.

我已经搜索了一段时间,看看是否有任何有趣的读物可用于该主题,但没有运气 - 如果你可以发布,如果你知道一个很好.

小智 0

你应该在这里阅读有关猫鼬鉴别器的内容

根据文档

鉴别器是一种模式继承机制。它们使您能够在同一底层 MongoDB 集合之上拥有具有重叠架构的多个模型。

我希望这对你有帮助