Node.js - Mongoose - 在这种情况下,我应该如何分配多个一对多关系?

7 浏览
0 Comments

Node.js - Mongoose - 在这种情况下,我应该如何分配多个一对多关系?

在这种情况下,我需要分配多个一对多的关系,如下所示:

var portfolioSchema = new Schema({
    volatility         :  Number,
    bonds              :  {
        percentage          :  { type: Number, default: 0.6 },
        USA                 :  {
            percentage           :  { type: Number, default: 0.7 },
            treasury             :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            municipal            :  {
                percentage            :  { type: Number, default: 0.2 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            corporate            :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        },
        international       :  {
            percentage           :  { type: Number, default: 0.3 },
            developed            :  {
                percentage            :  { type: Number, default: 0.7 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            emergent        :  {
                percentage            :  { type: Number, default: 0.3 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        }
    },
    stocks          :  {
        percentage          :  { type: Number, default: 0.4 },
        USA                 :  {
            percentage           :  { type: Number, default: 0.7 },
            largeCaps            :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            mediumCaps           :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            smallCaps            :  {
                percentage            :  { type: Number, default: 0.2 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        },
        international       :  {
            percentage           :  { type: Number, default: 0.3 },
            developed            :  {
                percentage            :  { type: Number, default: 0.7 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            emergent        :  {
                percentage            :  { type: Number, default: 0.3 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        }
    },
    _goal           :  { type: ObjectId, ref: 'Goal' }
});
var securitySchema = new Schema({
    name               :  { type: Date, required: true },
    avgReturn          :  Number,
    avgRisk            :  Number,
    percentage         :  Number
});

然而,我觉得使用数组数据类型而不是`[ { type: ObjectId, ref: 'Security' } ]`会更容易一些。

我不确定应该做什么。有人知道适当的方法吗?谢谢!

0
0 Comments

问题的原因是在mongoose模式中不应该写入Array这个单词。解决方法是使用[ { type: ObjectId, ref: 'Security' } ]

但是,我很抱歉,你所提到的相关答案并没有帮到我。它建议使用Arrays,为什么要建议使用[ { type: ObjectId, ref: 'Security' } ]?你能否请更具体一些?

0
0 Comments

问题的出现原因:

在Node.js的Mongoose中,当需要在一个模型中创建多个多对一关系时,需要正确地分配这些关系。然而,对于给定的情况,存在一些困惑。

解决方法:

如果数组只包含Security对象,应该使用[ { type: ObjectId, ref: 'Security' } ]

0