Mungo: Was ist los mit "_doc"?

Es sieht so aus, als ob Mongoose intern etwas wirklich Irres macht.

1 var Foo = new mongoose.model('Foo', new mongoose.Schema({a: String, b: Number}));
2 var foo = new Foo({a: 'test; b: 42}); 
3 var obj = {c: 1};
4 foo.goo = obj;                  // simple object assignment. obj should be 
                                  //   passed by reference to foo.goo. recall goo
                                  //   is not defined in the Foo model schema

5 console.log(foo.goo === obj);   // comparison directly after the assignment
    // => false, doesn't behave like normal JS object

Wenn Sie versuchen, mit Eigenschaften eines Mongoose-Modells umzugehen, die nicht a) im Modellschema oder b) als derselbe Typ (Array, Objekt, ...) definiert sind, ist das Modell im Grunde genommen gar nicht verhalten sich wie ein normales Javascript-Objekt.

Schaltleitung4 zufoo._doc.goo = obj macht die Konsolenausgabetrue.

bearbeiten: versuchen, Verrücktheit zu reproduzieren

Beispiel 1:

 // Customer has a property 'name', but no property 'text'
 // I do this because I need to transform my data slightly before sending it
 // to client.
 models.Customer.find({}, function(err, data) {
     for (var i=0, len=data.length; i<len; ++i) {
        data[i] = data[i]._doc;            // if I don't do this, returned data
                                           // has no 'text' property
        data[i].text = data[i].name;       
    }
    res.json({success: err, response:data});
});