Mongoose: ํ•˜์œ„ ๋ฌธ์„œ ์Šคํ‚ค๋งˆ์—์„œ ๊ฐ€์ƒ ์ฑ„์šฐ๊ธฐ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด find์—์„œ 'null'์ด ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 11์›” 04์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Automattic/mongoose

๋ชฝ๊ตฌ์Šค: 4.6.6
๋ชฝ๊ณ DB: 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 ์†์„ฑ์ด null์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์†์„ฑ ์„ ์–ธ์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ชฉ๋ก์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

 {
        "_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 ๋Œ“๊ธ€

์ด ๋ฌธ์ œ๋Š” schemas.js์˜ Schema.prototype.virtual ์„ ์–ธ์—์„œ pre-hook์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ›„ํฌ๋ฅผ ๋นˆ ํ›„ํฌ๋กœ ๊ต์ฒดํ•œ ํ›„์—๋„:

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

๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

1079๊ฐ€ ๋‹ค์‹œ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋‚ด๋†“์œผ๋ฉด 4.6.8 :+1๊ณผ ํ•จ๊ป˜ ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

d09c3d677ca4daf087be343af177f05ae2043502์—์„œ ์ˆ˜์ •๋จ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰