Mongoose: рдореЛрдВрдЧреЛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ: MongoError: рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд╢реЛрдзрдХ: $pushAll

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдЧре░ 2017  ┬╖  27рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЛ

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдареАрдХ рдЙрд╕реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЗрдирдХреАрдВрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕реНрдерд╛рдиреАрдп рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдореИрдХреЛрд╕ рдФрд░ рдЬреЗрдирдХреАрдВрд╕ рдЙрдмрдВрдЯреВ рд╣реИред

рдореИрдХреЛрдЬрд╝ рд╕рд┐рдПрд░рд╛, рдиреЛрдб 8.4 рдФрд░ 7.11, рдореЛрдВрдЧреЛрдбрдм 3.4.7, рдФрд░ рдореЛрдВрдЧреЛрдЬрд╝ 4.11.7 рдкрд░ рдирд┐рдореНрди рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЬреЗрдирдХрд┐рдиреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдмрдВрдЯреВ 16.04 рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдЯреАрдХ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

  it("should successfully allow an alias that matches a service", async () => {
    const aliasTag = "this is a test";
    const appAlias = await AliasController.create(user, appAliasSpec);
    const serviceAlias = await AliasController.create(user, serviceAliasSpec);

    appAlias.aliases.push(aliasTag);
    await appAlias.save(); // This is the line that fails in jenkins

    serviceAlias.aliases.push(aliasTag);
    await serviceAlias.save();

    const confAppAlias = await AliasController.getById(appAlias._id);
    const confServiceAlias = await AliasController.getById(serviceAlias._id);
    expect(confAppAlias.aliases[1]).to.equal(aliasTag);
    expect(confServiceAlias.aliases[1]).to.equal(aliasTag);
  });

рдпрд╣рд╛рдВ рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд░рд╣реА рд╣реИ:

{
    "message": "Unknown modifier: $pushAll",
    "name": "MongoError",
    "stack": "MongoError: Unknown modifier: $pushAll\n    at Function.MongoError.create (/var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb-core/lib/error.js:31:11)\n    at toError (/var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb/lib/utils.js:139:22)\n    at /var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb/lib/collection.js:1060:67\n    at /var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb-core/lib/connection/pool.js:469:18\n    at _combinedTickCallback (internal/process/next_tick.js:131:7)\n    at process._tickCallback (internal/process/next_tick.js:180:9)",
    "code": 9
}

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХрд╛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╕рдВрд╕реНрдХрд░рдг рд╣реИ

MongoError: Unknown modifier: $pushAll
    at Function.MongoError.create (/var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb-core/lib/error.js:31:11)
    at toError (/var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb/lib/utils.js:139:22)
    at /var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb/lib/collection.js:1060:67
    at /var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb-core/lib/connection/pool.js:469:18
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
needs clarification

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

рд╡реИрд╕реЗ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЛрдВрдЧреЛрдбрдм 3.5 рдПрдХ рдЕрд╕реНрдерд┐рд░ рджреЗрд╡ рд░рд┐рд▓реАрдЬ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред $pushAll рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ 3.5 рдореЗрдВ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ред @mbroadst рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рдордиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ usePushEach рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛ рдерд╛: https://github.com/Automattic/mongoose/issues/4455 , рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

new Schema({ arr: [String] }, { usePushEach: true });

рд╕рднреА 27 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдк mongoose.set('debug', true) рдФрд░ рдореЛрдВрдЧреЛ рдЖрдЙрдЯрдкреБрдЯ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдЖрдЙрдЯрдкреБрдЯ

Mongoose: aliases.update({ _id: ObjectId("599d98122b72d12e0ba858b4") }, { '$pushAll': { aliases: [ 'this is a test' ] }, '$set': { updatedAt: new Date("Wed, 23 Aug 2017 14:58:26 GMT") }, '$inc': { __v: 1 } })
{"name":"davis","hostname":"ld-ub-bm980a98v","pid":11787,"level":50,"err":{"message":"Unknown modifier: $pushAll","name":"MongoError","stack":"MongoError: Unknown modifier: $pushAll
    at Function.MongoError.create (/var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb-core/lib/error.js:31:11)
    at toError (/var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb/lib/utils.js:139:22)
    at /var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb/lib/collection.js:1060:67
    at /var/lib/jenkins/workspace/davis-cloudcontrol/node_modules/mongodb-core/lib/connection/pool.js:469:18
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)","code":9},"msg":"An unhandled Mongo error occurred.","time":"2017-08-23T14:58:26.201Z","v":0}

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдбреАрдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рд╡реЗ рджреЛрдиреЛрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ $pushAll рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреИрдХреЗрдЬ рд╕реЗ рдореЛрдВрдЧреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдорд╢реАрдиреЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рдореИрдХреЛрдЬрд╝ рд╣реИрдВ, рдЙрддреНрдкрд╛рджрди рдорд╢реАрдиреЗрдВ рдЕрдореЗрдЬрд╝реЕрди рд▓рд┐рдирдХреНрд╕ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдореЛрдВрдЧреЛ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЬреЗрдирдХреАрдВрд╕ рдореЛрдВрдЧреЛрдбрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ db.version рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ?

$ mongo test
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017/test
MongoDB server version: 3.4.1 
> db.version()
3.4.1
> ^C
bye

рдЖрдк рдиреЗрд╡рд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ serverStatus() рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд┐рдВрдЯ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/test');

mongoose.connection.on('open', function() {
  mongoose.connection.db.admin().serverStatus(function(error, info) {
    console.log(info.version);
  });
});

рдХреГрдкрдпрд╛ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд╣рд╛рдБ, рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИред 3.2 рд╕реЗ 3.5 рддрдХ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдХреЛрдИ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдирд╣реАрдВ)ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рдгреА рдлрд╝реАрд▓реНрдб рд╣реИ

    'liked': {
        'item':[ {
            'id': {'type': Types.ObjectId, 'ref': 'Item'},
            'score': {'type': Number, 'max': 100, 'default': -1},
            'comment': {'type': String, 'maxlength': 65000, 'trim': true, 'default': '', 'set': san.methods.safe}
        } ]
    },

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, id рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЗ, рдЗрд╕рдиреЗ 3.2 рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред 3.5 рдореЗрдВ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдзрдХреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ .save() рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЖрдЗрдЯрдо рдХреЛ .push() рдорд╛рдзреНрдпрдо рд╕реЗ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдлрд╝реАрд▓реНрдб рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВ .markModified('liked.item'); ред рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЛрдВрдЧреЛрдбреАрдмреА 3.5?

рд╣рд╛рдВ

 targetMinOS: Windows 7/Windows Server 2008 R2
 db version v3.5.13
 git version: 52bbaa007cd84631d6da811d9a05b59f2dfad4f3
 OpenSSL version: OpenSSL 1.0.1u-fips  22 Sep 2016
 allocator: tcmalloc
 modules: none
 build environment:
     distmod: 2008plus-ssl
     distarch: x86_64
     target_arch: x86_64

рд╡реИрд╕реЗ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЛрдВрдЧреЛрдбрдм 3.5 рдПрдХ рдЕрд╕реНрдерд┐рд░ рджреЗрд╡ рд░рд┐рд▓реАрдЬ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред $pushAll рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ 3.5 рдореЗрдВ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ред @mbroadst рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рдордиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ usePushEach рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛ рдерд╛: https://github.com/Automattic/mongoose/issues/4455 , рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

new Schema({ arr: [String] }, { usePushEach: true });

@vkarpov15 рд╣рд╛рдБ рдЗрд╕реЗ featureCompatibilityVersion=3.6 рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЫреВрдирд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдо #5670 рдЖрдЙрдЯ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗред

рдореБрдЭреЗ рд╡рд╣реА рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЕрдкрдиреЗ ubuntu рдкрд░ mongodb v3.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдкреБрд╢рдСрд▓ рдХреЛ рдбреАрдмреА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП .. рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

@rankitbishnoi рдЖрдк рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреАрдорд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ usePushEach рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдХрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@vkarpov15 рд╢рд╛рдирджрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╕рд░ред

рдореИрдВ рднреА, Mongoose 4.13.7 рдФрд░ MongoDB 3.6.0 рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЕрджреНрдпрддрди: рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреАрдорд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ usePushEach: true рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ред

@dyladan @chadjohnson рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдХреГрдкрдпрд╛, рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? рдореИрдВ рдЗрд╕реЗ рд╕реНрдХреАрдорд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ? рдзрдиреНрдпрд╡рд╛рдж!

@ raphaelbp12 рдпрд╣рд╛рдБ рд╕реНрдХреАрдорд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ: http://mongoosejs.com/docs/guide.html

рд╕реНрдХреАрдорд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ 3.6 рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕рдВрд╕реНрдХрд░рдг 3.4 рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

рдореБрдЭреЗ рдЕрдкрдиреА рдорд╢реАрди рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЛрдВрдЧреЛрд╕ 5 рдФрд░ рдореЛрдВрдЧреЛрдбреАрдмреА 3.6 рдХреА рд╡рдЬрд╣ рд╕реЗ рд╣реИред рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

  • рдиреЗрд╡рд▓рд╛ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рек.резрей.рео ( npm install [email protected] --save ), рдФрд░
  • MongoDB рд╕реЗ 3.4 (рдЖрдк db.version() рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! :)

рдиреЗрд╡рд▓рд╛ 5 рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдХрд╣реАрдВ рднреА $pushAll рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдиреЗрд╡рд▓рд╛ 5 рдХреЗ рд╕рд╛рде рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдХреЛрдб рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реЗрдВ: +1:

PS C:\Users\paula\projetos\apiNode\src> рдиреЛрдб index.js
{ MongoError: рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд╢реЛрдзрдХ: $pushAll
Function.MongoError.create рдкрд░ (C:\Users\paula\projetos\apiNode\node_modules\mongodb-core\lib\error.js:31:11)
toError рдкрд░ (C:\Users\paula\projetos\apiNode\node_modules\mongodb\lib\utils.js:139:22)
C:\Users\paula\projetos\apiNode\node_modules\mongodb\lib\Collection.js:1059:67 рдкрд░
C:\Users\paula\projetos\apiNode\node_modules\mongodb-core\lib\connection\pool.js:469:18 рдкрд░
_combinedTickCallback рдкрд░ (рдЖрдВрддрд░рд┐рдХ/рдкреНрд░рдХреНрд░рд┐рдпрд╛/next_tick.js:131:7)
at process._tickCallback (рдЖрдВрддрд░рд┐рдХ/рдкреНрд░рдХреНрд░рд┐рдпрд╛/next_tick.js:180:9)
рдирд╛рдо: 'рдореЛрдВрдЧреЛ рдПрд░рд░',
рд╕рдВрджреЗрд╢: 'рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд╢реЛрдзрдХ: $pushAll',
рдбреНрд░рд╛рдЗрд╡рд░: рд╕рдЪ,
рд╕реВрдЪрдХрд╛рдВрдХ: 0,
рдХреЛрдб: 9

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд╢реЛрдзрдХ: $ pushAll

рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХрд╛рд╕реНрдЯ рдиреЗрд╡рд▓рд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдиреЗрд╡рд▓рд╛')
рдХреЙрдиреНрд╕реНрдЯ ╨╡╨╝╨░ = рдиреЗрд╡рд▓рд╛.рд╕реНрдХреАрдорд╛

const UserSchema = рдирдИ рд╕реНрдХреАрдорд╛ ({
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЖрдИрдбреА: {
рдкреНрд░рдХрд╛рд░: рд╕рдВрдЦреНрдпрд╛,
рдЖрд╡рд╢реНрдпрдХ: рд╕рдЪ,
рдЙрдкрдпреЛрдЧрдкреБрд╢рдкреНрд░рддреНрдпреЗрдХ: рд╕рдЪ
},

рдлрд┐рд▓реНрдореЗрдВ: {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: [рд╕реНрдЯреНрд░рд┐рдВрдЧ],
рдЪреВрдХ рдЬрд╛рдирд╛: []
}
})

mongoose.model ('рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛', UserSchema)

@ рдирджрд┐рдпреЛрдВ-рд▓рд┐рд╕ рдЖрдкрдХреЛ рд╕реНрдХреАрдорд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ usePushEach рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рд╕реНрдХреАрдорд╛ рдореЗрдВ рдирд╣реАрдВ, рдЬреИрд╕реЗ:

new Schema({ ... }, { usePushEach: true });

рдпрд╣рд╛рдВ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ
рдХрд╛рд╕реНрдЯ рдиреЗрд╡рд▓рд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдиреЗрд╡рд▓рд╛')
рдХреЙрдиреНрд╕реНрдЯ рд╕реНрдХреАрдорд╛ = рдиреЗрд╡рд▓рд╛ред рд╕реНрдХреАрдорд╛

const UserSchema = рдирдИ рд╕реНрдХреАрдорд╛ ({
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЖрдИрдбреА: {
рдкреНрд░рдХрд╛рд░: рд╕рдВрдЦреНрдпрд╛,
рдЖрд╡рд╢реНрдпрдХ: рд╕рддреНрдп
},

films: {
    type: [String],
    default: []
}

})

рдирдИ рд╕реНрдХреАрдорд╛ ({}, {usePushEach: true})

mongoose.model('users', UserSchema)

new Schema({ ... }, { usePushEach: true });
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 4.4.12 рдФрд░ 5.0.7 . рдкрд░ рднреА рддреНрд░реБрдЯрд┐ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ

рдпрд╣рд╛рдВ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВ
рдХрд╛рд╕реНрдЯ рдиреЗрд╡рд▓рд╛ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдиреЗрд╡рд▓рд╛')
рдХреЙрдиреНрд╕реНрдЯ рд╕реНрдХреАрдорд╛ = рдиреЗрд╡рд▓рд╛ред рд╕реНрдХреАрдорд╛

const UserSchema = рдирдИ рд╕реНрдХреАрдорд╛ ({
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЖрдИрдбреА: {
рдкреНрд░рдХрд╛рд░: рд╕рдВрдЦреНрдпрд╛,
рдЖрд╡рд╢реНрдпрдХ: рд╕рддреНрдп
},

films: {
    type: [String],
    default: []
}

})

рдирдИ рд╕реНрдХреАрдорд╛ ({}, {usePushEach: true})

mongoose.model('users', UserSchema)

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рд░реВрд╕реА рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛

@DanGDroid рдХрд╛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ "╨Ъ╨░╨║ ╤В╨╛ ╨▓╨╛╤В ╤В╨░╨║" -> "рдХреБрдЫ рдЗрд╕ рддрд░рд╣"

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