Mongoose: 가상 쀑첩 μ±„μš°κΈ°λŠ” μƒμœ„ μ±„μš°κΈ° μ˜΅μ…˜μ„ μ€‘λ‹¨ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 05μ›” 27일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: Automattic/mongoose

μ€‘μ²©λœ μ±„μš°κΈ° 및 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λŠ” 버그가 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ‚΄ ν˜„μž¬ μΏΌλ¦¬λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

...
await Post.find(
          { teacher: req.params.id },
          {},
          {
            sort: { createdAt: -1 },
            limit: 5,
            skip: parseInt(req.query.skip, 10)
          }
        ).populate([
        {
          path: 'comments',
          options: {
            limit: 5,
            sort: { createdAt: -1 }
          },
          populate: { path: 'user', select: '-password' }
        }
      ])
...

comments μ±„μš°κΈ°(내뢀에 λ‹€λ₯Έ μ±„μš°κΈ°κ°€ 쀑첩됨)에 options λ₯Ό ν¬ν•¨ν•˜λ©΄ μ§€μ •λœ limit 이상을 λ°˜ν™˜ν•˜κ³  sort λŠ” μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ€‘μ²©λœ μ±„μš°κΈ°κ°€ 제거되면 μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

ν˜„μž¬ λ‹€μŒμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ…Έλ“œ 10.2.1
λͺ½κ΅¬μŠ€ 5.1.2
λͺ½κ³  3.6.5

이것은 λ²„κ·Έμž…λ‹ˆκΉŒ, μ•„λ‹ˆλ©΄ μ œκ°€ λ­”κ°€λ₯Ό λ†“μΉ˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” 이것이 κ΄€λ ¨ 될 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€ : https://github.com/Automattic/mongoose/issues/4321

confirmed-bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@Mikeysax κ·€ν•˜μ˜ μ˜ˆμ—μ„œ κ°€λŠ₯ν•œ ν•œ 이것을 λ³΅μ œν•˜κΈ° μœ„ν•΄μ΄ μš”μ§€ λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ 6528μ΄λΌλŠ” 폴더에 둜컬둜 λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

issues: git clone https://gist.github.com/7dee38490d8c637976d8fb0805aafb1e ./6528
Cloning into './6528'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), done.
issues: ls !$
ls ./6528
6528.js          models6528.js    populate6528.js
issues:

μ‚°μΆœ:

6528>: chmod +x populate6528.js
6528>: chmod +x 6528.js
6528>: ./populate6528.js
created 10 users
created 10 teachers
created 100 posts
created 1000 comments
6528>: ./6528.js
{ AssertionError [ERR_ASSERTION]: 10 === 5
    at run (/Users/lineus/dev/Help/mongoose5/issues/6528/6528.js:38:10)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
  generatedMessage: true,
  name: 'AssertionError [ERR_ASSERTION]',
  code: 'ERR_ASSERTION',
  actual: 10,
  expected: 5,
  operator: '===' }
^C
6528>:

λ‚˜λŠ” ν•˜λ£¨μ˜ λŒ€λΆ€λΆ„μ„ μ—¬ν–‰ν•  κ²ƒμ΄μ§€λ§Œ, 였늘 λ°€μ΄λ‚˜ 내일 κ°€μž₯ λ¨Όμ € 그것을 쑰사할 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

@Mikeysax κ·€ν•˜μ˜ μ˜ˆμ—μ„œ κ°€λŠ₯ν•œ ν•œ 이것을 λ³΅μ œν•˜κΈ° μœ„ν•΄μ΄ μš”μ§€ λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ 6528μ΄λΌλŠ” 폴더에 둜컬둜 λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

issues: git clone https://gist.github.com/7dee38490d8c637976d8fb0805aafb1e ./6528
Cloning into './6528'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), done.
issues: ls !$
ls ./6528
6528.js          models6528.js    populate6528.js
issues:

μ‚°μΆœ:

6528>: chmod +x populate6528.js
6528>: chmod +x 6528.js
6528>: ./populate6528.js
created 10 users
created 10 teachers
created 100 posts
created 1000 comments
6528>: ./6528.js
{ AssertionError [ERR_ASSERTION]: 10 === 5
    at run (/Users/lineus/dev/Help/mongoose5/issues/6528/6528.js:38:10)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
  generatedMessage: true,
  name: 'AssertionError [ERR_ASSERTION]',
  code: 'ERR_ASSERTION',
  actual: 10,
  expected: 5,
  operator: '===' }
^C
6528>:

λ‚˜λŠ” ν•˜λ£¨μ˜ λŒ€λΆ€λΆ„μ„ μ—¬ν–‰ν•  κ²ƒμ΄μ§€λ§Œ, 였늘 λ°€μ΄λ‚˜ 내일 κ°€μž₯ λ¨Όμ € 그것을 쑰사할 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

λΆ„λͺ…νžˆ ν•˜κΈ° μœ„ν•΄ λ‚΄ μˆ˜μ • 사항은 μ˜΅μ…˜ 개체λ₯Ό 쿼리에 μ˜ˆμƒλŒ€λ‘œ μ μš©ν•˜μ§€λ§Œ #4321의 λ¬Έμ œλŠ” μˆ˜μ • ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ . λ‚˜λŠ” κ·Έ λ¬Έμ œμ— λŒ€ν•œ λͺ‡ 가지 생각을 λ³„λ„λ‘œμ£Όκ³  λ‚΄κ°€ μ–΄λ–€ μ•„μ΄λ””μ–΄μ˜ κ°€μΉ˜ 곡유λ₯Ό (그것은 νž˜λ“€μ–΄ λ„ˆνŠΈμ˜)μ΄μžˆλŠ” 경우 PRλ₯Ό μ œμΆœν•©λ‹ˆλ‹€.

λ„€, μ œν•œκ³Ό μΈκ΅¬λŠ” μ•„μ£Ό μ˜€λž«λ™μ•ˆ 우리 νŽΈμ— κ°€μ‹œμ˜€μŠ΅λ‹ˆλ‹€. 일반적인 μ•„μ΄λ””μ–΄λŠ” limit 와 ν•¨κ»˜ populate() μ‚¬μš©ν•˜κ³  μ—¬λŸ¬ λ¬Έμ„œλ₯Ό λ‹€μ‹œ κ°€μ Έμ˜€λŠ” 경우 각 λ¬Έμ„œμ— λŒ€ν•΄ λ³„λ„μ˜ 쿼리λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰