首页 文章

Mongoose参考简单的代码参考值?

提问于
浏览
0

我正在设计一个MongoDB模式来保存一个相当大/嵌套的文档 . 我打算尽可能多地嵌入到单个文档中,但不确定如何处理代码/查找值 . 例如,如果我们有一个代表“priority”的代码表,可能的值为:

这是我应该使用Mongoose引用的东西,并创建一个简单的文档来保持优先级,例如:

var PrioritySchema = new Schema({
    description: String
 });

然后将使用以下内容引用它:

var AnotherSchema = new Schema({
    name: String,
    active: Boolean,
    priority: { type: String, ref: 'Priority' }
 });

或者这有点矫枉过正?我想避免的是将这些“描述”直接存储在主/整体模型中,然后在将来的某个时间更改需求 . 例如,有人决定而不是“中等”,我们需要“稍微”称它 . 在那种情况下,我认为我会陷入某种数据迁移的困境?

1 回答

  • 1

    你可以这样做 :

    var PrioritySchema = new Schema({
        description: String
     });
    

    还有这个

    var AnotherSchema = new Schema({
        name: String,
        active: Boolean,
        priority: { PrioritySchema  }
     });
    

    但如果你想要你进一步描述的内容我会建议你这样做:

    var AnotherSchema = new Schema({
            name: String,
            active: Boolean,
            priority: { type: Schema.Types.ObjectId, ref: 'Priority' } // see this : Schema.Types.ObjectId != String
         });
    

    如果您需要将这些值作为需要使用引用的跨文档,那么让我们简单一点 . 如果由于父文档而仅存在值,则可以选择嵌入 .

    欲了解更多信息,请阅读:http://mongoosejs.com/docs/2.7.x/docs/embedded-documents.html

    仅供参考:我过去常常为此付出很多努力 . 如果您遵循嵌入所有嵌套子文档的路径,您将面临很多“为什么我不能这样做:”(最后我选择了引用方式,我觉得它更加舒适 . embing!= referencing .

相关问题