【问题标题】:Save to mongDB 3rd level nested array of objects保存到 mongoDB 3 级嵌套对象数组
【发布时间】:2019-07-05 01:50:38
【问题描述】:

我正在尝试使用以下模型示例将数据保存到团队数据库中。这是使用 Mongoose 的 MongoDB 的第三级嵌套对象数组。


    const teamSchema = new Schema({
        name: {
            type: String,
            required: true
        },
        who: {
            type: String,
            required: true
        },
        textManifesto: {
            type: String,
            required: false
        },
        videoManifesto: {
            type: String,
            required: false
        },
        competencies: {
            competency: [{
                type: Schema.Types.ObjectId,
                ref: 'Competency',
                required: true
            }]
        },
        members: [{
            member: {
                type: Schema.Types.ObjectId,
                ref: 'Applicant',
                required: true
            },
            position: {
                type: String,
                required: true
            }, 
            memberCompetencies: {
                competency: [{
                    type: Schema.Types.ObjectId,
                    ref: 'Competency',
                    required: true
                }]
            },
            evaluatedCompetencies: {
                competency: [{
                    type: Schema.Types.ObjectId,
                    ref: 'Competency',
                    required: false
                }]
            }
        }],
    },

我基本上使用 push 方法将数组元素推送到一个变量中,然后尝试保存到数据库中,但数据库中的 Members.memberCompetencies 是空的。它只是显示和空数组。



    //Map Team Competencies
        for (let competency of teamCompetencies) //array is your array variable, i suppose
            newTeamCompetencies.push({ competency: competency, _id: mongoose.Types.ObjectId() });

            //console.log(newTeamCompetencies);

            //Map My Competencies
        for (let competency of myCompetencies) //array is your array variable, i suppose
            newMyCompetencies.push({ _id: mongoose.Types.ObjectId(), competency: competency });

            // console.log(newMyCompetencies);


        team = await new Team({
            name: teamName,
            textManifesto: textManifesto,
            who: who,
        });
        //save collective expected competencies of team
        team.competencies = newMyCompetencies;
        //save member details
        team.members = ({
            member: res.locals.applicant._id,
            position: 'Leader',
            memberCompetencies: newMyCompetencies,
        })


        team = await team.save();

        console.log(team.members);

预期结果

    [{"memberCompetencies":{ '0':
          { _id: 5d1e128b2a9f1c74907e5ba9,
            competency: '5d1dd97206660707754eefb3' },
         '1':
          { _id: 5d1e128b2a9f1c74907e5baa,
            competency: '5d1dd9d506660707754eefb4' } },,"evaluatedCompetencies":{"competency":[]},"_id":"5d1e1393f640587531b0fd48","member":"5d19999df6f9c678e891af14","position":"Leader"}]

实际结果


    [{"memberCompetencies":{"competency":[]},"evaluatedCompetencies":{"competency":[]},"_id":"5d1e1393f640587531b0fd48","member":"5d19999df6f9c678e891af14","position":"Leader"}]

【问题讨论】:

    标签: node.js express mongoose


    【解决方案1】:

    发现问题。模型错了。模型的成员部分应该是

    
        members: {
                    member: {
                        type: Schema.Types.ObjectId,
                        ref: 'Applicant',
                        required: true
                    },
                    position: {
                        type: String,
                        required: true
                    }, 
                    memberCompetencies: {
                        competency: [{
                            type: Schema.Types.ObjectId,
                            ref: 'Competency',
                            required: true
                        }]
                    },
                    evaluatedCompetencies: {
                        competency: [{
                            type: Schema.Types.ObjectId,
                            ref: 'Competency',
                            required: false
                        }]
                    }
                },
    
    

    应该是

    
        members: {...} 
        NOT 
        members: [{...}]
    
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 2020-12-18
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 2019-02-17
      相关资源
      最近更新 更多