Mongoose: يؤدي تمكين الملء الظاهري في مخطط المستند الفرعي إلى العثور على "فارغ"

تم إنشاؤها على ٤ نوفمبر ٢٠١٦  ·  3تعليقات  ·  مصدر: Automattic/mongoose

النمس: 4.6.6
في mongodb: 2.2.11
العقدة: 4.5

يؤدي تمكين / تعطيل حقل الملء الظاهري فقط إلى ظهور مجموعة مستندات فرعية كـ null في نتائج الاستعلام

var someModelSchema = new mongoose.Schema({
  name: String
});

mongoose.model('someModel', someModelSchema)
var schema0 = new mongoose.Schema({
  name0: String
});

schema0.virtual('detail', {
  ref: 'SomeModel',
  localField: '_id',
  foreignField: '_id',
  justOne: true
});

var schema1 = new mongoose.Schema({
  name1: String,
  list: [schema0],
  obj: schema0
});

var schemaMain = new mongoose.Schema({
  nestedObj: schema1,
  nameMain: String
});
var ModelMain = mongoose.model('ModelMain', schemaMain);

var x = new ModelMain({
  nameMain: 'sss',
  nestedObj: {
    name1: 'name1',
    list: [{
      name0: 'name0.1'
    }],
    obj: {
      name0: 'name0.1'
    }
  }
})
x.save().then(function (err, docs) {
  ModelMain.find({}, function (err, docs) {
    console.log(JSON.stringify(docs, null, 4));
  })
})

النتائج في

 {
        "_id": "581cbf70d7c120443684a490",
        "nameMain": "sss",
        "nestedObj": {
            "name1": "name1",
            "obj": {
                "name0": "name0.1",
                "_id": "581cbf70d7c120443684a492"
            },
            "_id": "581cbf70d7c120443684a491",
            "list": [
                null
            ]
        },
        "__v": 0
    }

الخاصية list خالية. إذا قمت بالتعليق على إعلان الخاصية الافتراضية ، فستحتوي القائمة على البيانات المتوقعة ، وهي:

 {
        "_id": "581cbfdf0700ba445223c848",
        "nameMain": "sss",
        "nestedObj": {
            "name1": "name1",
            "obj": {
                "name0": "name0.1",
                "_id": "581cbfdf0700ba445223c84a"
            },
            "_id": "581cbfdf0700ba445223c849",
            "list": [
                {
                    "name0": "name0.1",
                    "_id": "581cbfdf0700ba445223c84b"
                }
            ]
        },
        "__v": 0
    }

التعليق الأكثر فائدة

ثابت في d09c3d677ca4daf087be343af177f05ae2043502

ال 3 كومينتر

لم تعد هذه المشكلة موجودة بعد التعليق على الرابط المسبق في إعلان Schema.prototype.virtual في schemas.js
حتى بعد استبدال الخطاف بخطاف فارغ:

    this.pre('init', function(next, obj) {
      next();
    });

القضية لا تزال قائمة.
كل شيء على ما يرام إذا تم التعليق على هذا.

1079 ضربات مرة أخرى. ضع إصلاحًا وسيخرج بـ 4.6.8: +1:

ثابت في d09c3d677ca4daf087be343af177f05ae2043502

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات