无法在mongo数组中推送项目

问题描述 投票:0回答:1

我每次尝试推入新元素时都无法将项目推入MongoDB数组,它会创建一个空对象,并且我无法弄清原因,我已经用过

Collection.Array.push({element})&Collection.save()

但是我不知道解决方案

这是我的模式

const Schema =  mongoose.Schema;

var ParticipantSchema = new Schema({

        nom:{Type:String},
        prenom:{Type:String},
        email:{Type:String}

})


var CompetitionSchema = new Schema({
    nom:String,
    date:Date,
    place:String,
    participant :[ParticipantSchema]
})

module.exports = mongoose.model("Competition",CompetitionSchema);

这是我的职责

exports.addParticipant=function(req,res){


        var newParticipant={

            "nom":req.body.nom,
            "prenom":req.body.prenom,
            "email":req.body.email

        }

        Competition.updateOne(
            { _id:req.body.id}, 
            { $push: { participant: newParticipant } },
            (err,done)=>{
               return res.json(done)
            }
        );



}

结果总是像下面这样一个空对象

{
    "_id": "5ded0eeb85daa100dc5e57bf",
    "nom": "Final",
    "date": "2019-01-01T23:00:00.000Z",
    "place": "Sousse",
    "participant": [
        {
            "_id": "5ded0eeb85daa100dc5e57c0"
        },
        {
            "_id": "5dee3c1b08474e27ac70672e"
        }
    ],
    "__v": 0
}
node.js mongodb mongoose
1个回答
0
投票

您正在使用数组中的另一个架构。这产生了所谓的子文档(https://mongoosejs.com/docs/subdocs.html)。猫鼬默认情况下不会填充子文档。因此,您所看到的只是_id。您可以使用populate方法详细查看所有子文档。 (https://mongoosejs.com/docs/populate.html)。

示例:

Competition.
  find({}).
  populate('participant').
  exec(function (err, comps) {
     //
  });

© www.soinside.com 2019 - 2024. All rights reserved.