Mongoose: рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрд╕реНрдЯреЗрдб рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдкреИрд░реЗрдВрдЯ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдкрд░ рд╡рд┐рдХрд▓реНрдк рддреЛрдбрд╝рддрд╛ рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдордИ 2018  ┬╖  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' }
        }
      ])
...

рдЬрдм options рдХреЛ comments (рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рдФрд░ рдЖрдмрд╛рджреА рд╣реЛрддреА рд╣реИ), рддреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ limit рд╕реЗ рдЕрдзрд┐рдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ sort рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдиреЗрд╕реНрдЯреЗрдб рдЖрдмрд╛рджреА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:

рдиреЛрдб 10.2.1
рдиреЗрд╡рд▓рд╛ 5.1.2
рдореЛрдВрдЧреЛ 3.6.5

рдХреНрдпрд╛ рдпрд╣ рдмрдЧ рд╣реИ рдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рдЧрдпрд╛ рд╣реВрдВ?

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/Automattic/mongoose/issues/4321

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@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 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рдореИрдВ рдЙрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░реВрдВрдЧрд╛ ( рдЗрд╕реЗ рдХреНрд░реИрдХ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ )ред

рд╣рд╛рдБ рд╕реАрдорд╛ рдФрд░ рдЖрдмрд╛рджреА рд╣рдорд╛рд░реЗ рдкрдХреНрд╖ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рдХрд╛рдВрдЯрд╛ рд░рд╣рд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк populate() рд╕рд╛рде limit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд╛рдкрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

CodeurSauvage picture CodeurSauvage  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ArThoX picture ArThoX  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

p3x-robot picture p3x-robot  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Soviut picture Soviut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AraanBranco picture AraanBranco  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ