【问题标题】:Storing app / site settings within mongodb using mongoose使用 mongoose 在 mongodb 中存储应用程序/站点设置
【发布时间】:2015-07-19 05:56:09
【问题描述】:

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

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

所以我必须找到一种方法来使用 mongoose 存储所有这些设置,但我无法提供适合该东西的架构。

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);

但是,如果我能找到一种方法来为部分定义模型,它会变得更好且可测试——比如一个用于后端设置的模型和另一个用于前端设置的模型,它们都应该以某种方式存储在 Settings 集合中。

所以我想要的是;

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

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

最后有一个主设置模式来覆盖这些并将所有这些文档保存到一个集合中。

我已经搜索了一段时间,看看是否有任何关于该主题的有趣读物,但没有运气——如果你能发帖以防万一你知道的话,那就太好了。

【问题讨论】:

    标签: mongoose


    【解决方案1】:

    你应该阅读 Mongoose Discriminators here

    根据文档

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 2011-01-14
      • 2014-04-02
      • 2015-01-25
      • 2015-11-24
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多