Mongoose: what's up with “_doc”?

前端 未结 4 986

It seems Mongoose is doing something really funky internally.

1 var Foo = new mongoose.model(\'Foo\', new mongoose.Schema({a: String, b: Number}));
2 var foo         


        
4条回答
  •  囚心锁ツ
    2021-01-01 13:27

    I was stuck on this today... Drove me nuts. Not sure if the below is a good solution (and OP has mentioned it too), but this is how I overcame this issue.

    My car object:

     cars = [{"make" : "Toyota"}, {"make" : "Kia"}];
    

    Action:

    console.log("1. Cars before the color: " + car);
    
    cars.forEach(function(car){
         car.colour = "Black";   //color is NOT defined in the model. 
    });
    
    console.log("2. Cars after the color: " + car);
    

    Problematic console output:

       1. Cars before the color: [{"make" : "Toyota"}, {"make" : "Kia"}];
       2. Cars after the color: [{"make" : "Toyota"}, {"make" : "Kia"}];   //No change! No new colour properties :(
    

    If you try to pass in this property that was undefined in the model, via doc (e.g. car._doc.color = "black"), it will work (this colour property will be assigned to each car), but you can't seem to access it via EJS (frontend) for some reason.

    Solution: (Again, not sure if this is the best way... but it worked for me): Add in this new property (colour) in the car model.

    var carSchema = mongoose.Schema({
       make: String,
       color: String   //New property.
    })
    

    With the model redefined, everything worked as normal / expected (no _doc 'hacks' needed etc.) and I lived another day; hope it helps someone else.

提交回复
热议问题