рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ
(node:3341) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
рдореИрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
driver.createCar({
carName: 'jeep',
availableSeats: 4,
}, callback);
рдбреНрд░рд╛рдЗрд╡рд░ рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ
const carSchema = new Schema({
carName: String,
availableSeats: Number,
createdOn: { type: Date, default: Date.now },
});
const driverSchema = new Schema({
email: String,
name: String,
city: String,
phoneNumber: String,
cars: [carSchema],
userId: {
type: Schema.Types.ObjectId,
required: true,
},
createdOn: { type: Date, default: Date.now },
});
const DriverModel = mongoose.model('Driver', driverSchema);
class Driver extends DriverModel {
getCurrentDate() {
return moment().format();
}
create(cb) {
// save driver
this.createdOn = this.getCurrentDate();
this.save(cb);
}
remove(cb) {
super.remove({
_id: this._id,
}, cb);
}
createCar(carData, cb) {
this.cars.push(carData);
this.save(cb);
}
getCars() {
return this.cars;
}
}
рдореИрдВ рдЧрд▓рдд рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рд╣рдореНрдо рдХреНрдпрд╛ рдЖрдк рдХрд╣реАрдВ рднреА рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рддрдм рддрдХ рдирд╣реАрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдЖрдк рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ...
рдирд╣реАрдВ, рдореИрдВ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
рдореБрдЭреЗ рдЕрднреА рдпрд╣ рдореБрджреНрджрд╛ рднреА рдорд┐рд▓рдирд╛ рд╢реБрд░реВ рд╣реБрдЖ рд╣реИред рдЙрди рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ!
рдореИрдВрдиреЗ рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛
mongoose.Promise = global.Promise;
mongoose.connect . рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ
// connect to mongo function
core.connect = function connect(opts) {
mongoose.Promise = global.Promise;
mongoose.connect(`mongodb://${opts.server}:${opts.port}/${opts.db}`);
return mongoose.connection;
};
рд╣рд╛рдБ, рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рд╡рд╛рд▓реА рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдиреЗрд╡рд▓реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рджрд╛ рд▓рд┐рдм рдХреЛ рдмрджрд▓ рджреЗрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рддрдм рддрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдЖрдк рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддреЗред рддреЛ рдХрд╣реАрдВ
рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╡рд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ
рдореИрдВрдиреЗ рдиреЗрд╡рд▓рд╛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдиреЗрд╡рд▓рд╛ рдХреЛ рдПрдХ рд╡рд╛рджрд╛ рд╕реМрдВрдкрдиреЗ рдХреЗ рд▓рд┐рдП @SAudelOG рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ
рдореИрдВ рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди es7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЬрдм рдореИрдВ Model.findOne({}) рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░рд╛ рдХреЛрдб рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рд╕рдорд╛рдзрд╛рди @SAudelOG рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред @IrishAdo рдХреА рддрд░рд╣ рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдиреЗрд╡рд▓рд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдмреНрд▓реВрдмрд░реНрдб рд╡рд╛рджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдпрд╣рд╛рдБ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
"dependencies": {
"async": "^2.0.0-rc.6",
"body-parser": "^1.15.0",
"bower": "^1.7.7",
"compression": "^1.6.1",
"connect-mongo": "^1.2.1",
"consolidate": "^0.14.1",
"cookie-parser": "^1.4.3",
"express": "^4.13.4",
"express-jwt": "^3.4.0",
"express-session": "^1.13.0",
"express-validator": "^2.20.8",
"faker": "^3.1.0",
"http-errors": "^1.5.0",
"jsonwebtoken": "^7.0.1",
"lodash": "^4.13.1",
"method-override": "^2.3.5",
"mongoose": "^4.4.3",
"mongoose-beautiful-unique-validation": "^3.0.0",
"mongoose-delete": "^0.3.3",
"mongoose-validator": "^1.2.5",
"morgan": "^1.6.1",
"passport": "^0.3.2",
"passport-local": "^1.0.0",
"swig": "^1.4.2"
}
рдореИрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рди рд╣реА рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ([email protected] рдкрд░)ред
рдореЗрд░реЗ рдРрдк рдХреЛ "--trace-deprecation" рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ:
Trace: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead:
http://mongoosejs.com/docs/promises.html
at Object.exports._printDeprecationMessage (internal/util.js:30:13)
at Promise.deprecated [as then] (internal/util.js:54:22)
at fnWrapper (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:188:11)
at EmbeddedDocument.Object.defineProperty.value.fn (.\node_modules\mongoose\lib\schema.js:219:11)
at _next (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:62:30)
at fnWrapper (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:186:18)
at EmbeddedDocument.Object.defineProperty.value.fn (.\node_modules\mongoose\lib\schema.js:173:18)
at EmbeddedDocument._next (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:62:30)
at EmbeddedDocument.proto.(anonymous function) [as $__original_save] (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:108:20)
at .\node_modules\mongoose\lib\document.js:1917:24
at new Promise.ES6 (.\node_modules\mongoose\lib\promise.js:45:3)
at EmbeddedDocument.wrappedPointCut [as save] (.\node_modules\mongoose\lib\document.js:1893:14)
at async.each.i (.\node_modules\mongoose\lib\schema.js:225:18)
at .\node_modules\async\lib\async.js:181:20
at Object.async.forEachOf.async.eachOf (.\node_modules\async\lib\async.js:233:13)
at Object.async.forEach.async.each (.\node_modules\async\lib\async.js:209:22)
at model.Object.defineProperty.value.fn (.\node_modules\mongoose\lib\schema.js:223:15)
at _next (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:62:30)
at fnWrapper (.\node_modules\mongoose\node_modules\hooks-fixed\hooks.js:186:18)
at .\node_modules\mongoose\lib\schema.js:200:17
at .\node_modules\mongoose\node_modules\kareem\index.js:127:16
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickDomainCallback (node.js:390:13)
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдХреЛрдИ рдорджрдж рд╣реИ рддреЛ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдЙрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рдирдореЗрдВ рдЙрдирдХреЗ рдЕрдВрджрд░ рдЙрдк-рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХреБрдЫ:
var data = {
field: 'value',
another_field: [{subdocfield1: 'value', subdocfield2: 'value'}]
}
mySchema.create(data, cb)
рдпрд╣ рдЕрдиреНрдп рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рд╕рдмрдбреЙрдХреНрд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ рддрдм рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рд╕рдмрдбреЛрдХ рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг рдХрдерди рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ:
var data = {
field: 'value'
}
mySchema.create(data, cb)
_рдиреЛрдЯ:_ mongoose.Promise = global.Promise
рдиреЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛
рдЬрдм рдореИрдВ рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ remove()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЙрд╕реА рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдЕрдиреБрднрд╡ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдпрд╣рд╛рдВ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
Model.create(objects, callback);
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА, рд╢рд╛рдпрдж рдпрд╣ рдлрд┐рдХреНрд╕ рдЕрднреА рддрдХ npm рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ?
рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЗрд╕реЗ рдкрдврд╝рдХрд░ рдЦреБрд╢реА рд╣реБрдИ, рдпрд╣ рдЪрд┐рдВрддрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд╣реЛрдиреЗ рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рд░рдЦреВрдВрдЧрд╛ред
рдЗрд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдФрд░ рдореИрдВ рдХрд╣реАрдВ рднреА рдиреЗрд╡рд▓реЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдСрди-рд╣реЗрдбрд░ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рдореИрдВ рдЗрд╕реЗ model.save
рдХреЙрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдФрд░ рдореЙрдбрд▓ рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрд╛рд╣рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕реЗрд╡ рдХреЙрд▓ рджреЛрдиреЛрдВ рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рднреАрддрд░ рд░рдЦрдиреЗ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред
рдиреЛрдб v4.4.6 рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЬрдмрдХрд┐ v4.4.2 рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ
@SKatiyar рдХреЛрдб рдирдореВрдирд╛ рдХреГрдкрдпрд╛
рдореЗрд░реЗ рд╕рд╛рде рднреА, рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ () рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдореЗрд░реЗ рд▓рд┐рдП рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ
рдпрд╣ рд╕рд╣реА рд╣реИ! mongoose.connect(MONGO_URI);
mongoose.Promise = global.Promise;
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
const mongoose = require('mongoose');
const schema = new mongoose.Schema({
data: { type: Number }
});
const Model = mongoose.model('schema', schema);
mongoose.connect('mongodb://127.0.0.1:27017/somedatabase');
const newModel = new Model({ data: 1 });
const save = newModel.save(() => {
console.log('saved model');
});
console.log(typeof save.then); //=> 'function'
рдЕрдЬреАрдм рдЪреАрдЬ рдЬреЛ рдореИрдВ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ newModel.save(callback)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ (рдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ .then
рдХрд╛ рдкреНрд░рдХрд╛рд░ 'function'
рд╣реИ)ред рдХреНрдпрд╛ рд╡рд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?
рдпрд╣рд╛рдБ рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ:
рдиреЛрдб: v6.3.1
рдиреЗрд╡рд▓рд╛: v4.5.8
рдЕрдЧрд░ рдЖрдкрдХреЛ рдореБрдЭрд╕реЗ рдХреЛрдИ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
@dvlsg рд╣рд╛рдБ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд╕рд╣реЗрдЬреЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдк рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░реЗрдВ
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рд▓реЛрдЧ рд╡рд╛рджреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕рдордЭрд╛рддрд╛ рд╣реИ .. рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкрд╛рдЧрд▓ рд╣реВрдБ рдФрд░ рд╕рднреА рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ
рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рд╣реИ, рд╣рд╛рдБ .save() рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЪреЗрддрд╛рд╡рдиреА рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рджрд┐рдпрд╛ред http://mongoosejs.com/docs/promises.html (рдмрд╕ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдкрдврд╝рдирд╛ рдерд╛ )
рддреЛ .save()
рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рддрдм рддрдХ рдирд╣реАрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдЖрдк .then()
рдкрд░ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддреЗред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ .then()
рдкрд░ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдиреЗрд╡рд▓рд╛ рдХрд╣реАрдВ рдПрдХ рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдХреЛрдб рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ: +1:
рдЖрдИрдПрдордПрдЪрдУ, рдпрд╣ рд╕рдВрджреЗрд╢ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрдЬрд╛рдп рдПрдХ рддреНрд░реБрдЯрд┐ ("рдЪреАрдЬреЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА") рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ("рдзреНрдпрд╛рди рджреЗрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП"), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ aModel.save() рд╡рд┐рдзрд┐ MongoDB рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореВрд▓ рдХрд╛рд░рдг рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ред "mongoose.Promise = Global.Promise;" рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рдлрд▓ рд░рд╣рд╛ред
рдореИрдВ "рдореЛрдВрдЧреЛрдЬрд╝" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛: "^ 4.5.9"ред
рд╕рд╣реЗрдЬреЗрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рджрд╛ lib рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдПрдХ рдХреЛрдб рдирдореВрдирд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@vkarpov15
рддреБрдо рд╕рд╣реА рдХрд╣ рд░рд╣реА рд╣реЛред рдореИрдВрдиреЗ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╕реЗрд╡ рд░рд┐рдЬрд▓реНрдЯ рдХреЛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдиреНрдп рдХреЛрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдЪрд╛рд╣рд┐рдПред рдХрд╛рд░рдг рдЬрд╛рдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рди рджреЗрдВред
рдЬрдм рднреА рдореИрдВ .then () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд▓реЙрдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреЙрдк рдЕрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрд╡рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдиреЗрд╡рд▓рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ
рддреЛ, рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
'use strict';
var Promise = require('bluebird');
// Development specific configuration
// ==================================
module.exports = {
// MongoDB connection options
mongo: {
uri: 'mongodb://localhost/fullstack-dev',
options: {
promiseLibrary: Promise
}
},
// .. other config
};
рдлрд┐рд░ рдореЗрд░реА рдореБрдЦреНрдп рдлрд╛рдЗрд▓ рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
'use strict';
// Set default node environment to development
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
process.env.BLUEBIRD_DEBUG = 1;
var mongoose = require('mongoose');
var config = require(path.join(__dirname, 'server', 'config', 'environment'));
// Connect to database
var db = mongoose.connect(config.mongo.uri, config.mongo.options);
mongoose.connection.on('error', function(err) {
console.error('MongoDB connection error: ' + err);
process.exit(-1);
});
рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА query.exec
рдХрд░рддреЗ рд╕рдордп рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдкрд░ рдХреЛрдИ рд╕реБрдЭрд╛рд╡?
[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдиреЗрд╡рд▓рд╛ рдФрд░ рдмреНрд▓реВрдмрд░реНрдб рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛]
рдореИрдВ рдиреЗрд╡рд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ ^4.6.1
, рдмреНрд▓реВрдмрд░реНрдб ^3.4.6
рдореБрдЭреЗ рдиреЗрд╡рд▓рд╛ 4.6.1 рдФрд░ рдиреЛрдб 4.4.5 . рдкрд░ рднреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect(dbConfig);
var connection = mongoose.connection;
@manu29d рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк mongoose.Promise = bluebird
рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
@vkarpov15 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╣реВрдВред рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ var Promise =
рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ promiseLibrary: Promise
рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ред (рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкрд╣рд▓рд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ)
рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ promiseLibrary: require('bluebird')
рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЛрдб рдирдореВрдиреЗ рдореЗрдВ рдХрд╣реАрдВ рднреА mongoose.Promise = require('bluebird')
рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред var Promise = require('bluebird');
_not_ рд╕рд╣реА рд╣реИред
@vkarpov15 рдореИрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ http://mongoosejs.com/docs/promises.html#promises -for-the-mongodb-driver
рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк ( promiseLibrary
) рдЕрднреА рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдпрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ mongoose.Promise = global.Promise
рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
mongoose.Promise = global.Promise
mongoose.connect
рд╕реЗ рдкрд╣рд▓реЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ mongoose.Promise = global.Promise
рдкрд░ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
@ manu29d рд╡реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ promiseLibrary
рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд mongodb рдбреНрд░рд╛рдЗрд╡рд░, _not_ mongoose рдореЙрдбрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
@ рдЬрд╝реБрдмреИрд░-рдлрд╝рд╛рд░реВрдХрд╝реА -10 рдкреА рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрд░реЗ рд▓рд┐рдП 4.5.9 рдпрд╛ 4.6.3 рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ:
'use strict';
Error.stackTraceLimit = Infinity;
var assert = require('assert');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/gh4291');
mongoose.set('debug', true);
var connection = mongoose.connection;
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпрд╛ рдиреЗрд╡рд▓реЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж!
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдиреЗрд╡рд▓рд╛ рдХрд╛ рд╡рд╛рджрд╛ lib рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИред рдиреЗрд╡рд▓рд╛ рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рдиреЗрд╡рд▓рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдпрд╣ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдХрдиреЗрдХреНрдЯ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рдЖрдк рдХреЗрд╡рд▓ рд╡рд╛рджрд╛ lib рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВред рдЗрди рдорддрднреЗрджреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ .createConnecton()
рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЬрд┐рд╕ рдордЬрд╝реЗрджрд╛рд░ рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ Q... рд▓реЗрдХрд┐рди! рд▓реЗрдХрд┐рди рдореИрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ (рдФрд░ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ) рдЗрд╕реЗ var рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдмреНрд▓реЙрдХ рдореЗрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рдд
var mongoose = require('mongoose'),
connection1 = mongoose.createConnection(dbConn1Str),
connection2 = mongoose.createConnection(dbConn2Str)
;
mongoose.Promise = Q.makePromise;
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
var mongoose = require('mongoose'),
connection1, connection2
;
mongoose.Promise = Q.makePromise;
connection1 = mongoose.createConnection(dbConn1Str)
connection2 = mongoose.createConnection(dbConn2Str)
рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ, рд▓реЗрдХрд┐рди srsly...
рд╣рд╛рдБ рдпрд╣ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред рдиреЗрд╡рд▓рд╛ 4.x mpromise рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗред
рдХреНрд╡реЗрд░реА рд╕рд╣рд╛рдпрдХ рдХреЗ рд╕рд╛рде рдирд┐рдпрдорд┐рдд рдЦреЛрдЬ() рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред рдореИрдВ рдХрд╣реАрдВ рднреА then
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред
BookStore.find().byUsingQueryHelper(1,2,3).lean().exec(function (err, docs) { ... })
рд▓реЙрдЧ:
рдиреЗрд╡рд▓рд╛: Bookstores.find ({рд╕реНрдерд╛рди: {'$рдирд┐рдХрдЯ': [28.742712943610545, -13.865369983731426], '$maxDistance': 0.0012556898446083817 }}, { рд╕реАрдорд╛: 10, рдлрд╝реАрд▓реНрдб: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд})
(рдиреЛрдб: 82366) рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: рдиреЗрд╡рд▓рд╛: mpromise (рдиреЗрд╡рд▓рд╛ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдкрджрд╛рд╡рдирдд рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд╛рджреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░реЗрдВ: http://mongoosejs.com/docs/promises.html
@pronebird рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕ рддрд░рд╣ exec()
рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, exec()
рдкрд░ рдХреЙрд▓рдмреИрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд╛рджреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдмрд╕ mongoose.Promise = global.Promise
рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рд╡рд╣ рдЪреЗрддрд╛рд╡рдиреА рдЕрдм рдФрд░ рдирд╣реАрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред
@pronebird рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА, рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реА рд╕реНрдХреАрдорд╛ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдиреАрдЪреЗ рдореЗрд░реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдорд╛рди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ
рднреВрдорд┐рдХрд╛: {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ,
рдПрдирдо: ['рдХреНрд▓рд╛рдЗрдВрдЯ', 'рдПрдбрдорд┐рди'],
рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 'рдЧреНрд░рд╛рд╣рдХ'
}
рдореИрдВ рднреВрдорд┐рдХрд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдФрд░ рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрддреНрддрд░ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж
@Muhammedalbayati рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЗ рдореБрджреНрджреЗ рдХрд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджреЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ? рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╛рджреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдиреЗрд╡рд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИред
@varunjayaraman рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЪреЗрддрд╛рд╡рдиреА
рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА: рдиреЗрд╡рд▓рд╛: mpromise (рдиреЗрд╡рд▓рд╛ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдкрджрд╛рд╡рдирдд рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд╛рджреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░реЗрдВ: http://mongoosejs.com/docs/promises.html
рдиреЗрд╡рд▓рд╛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рджрд╛ = рд╡реИрд╢реНрд╡рд┐рдХред рд╡рд╛рджрд╛; рдбреАрдмреА . рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
mongoose.connect('mongodb://localhost:27017/mydb');
@ Muhammedalbayati рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ @ vkarpov15 рдиреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдиреЗрд╡рд▓рд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ exec
рдХреЗ рднреАрддрд░ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
ES6 "yiled" рдореИрдВ mongoose рдХреЛ v.4.7.7.7 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж doc.save рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред
рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ mongoose.Promise = global.Promise
ред рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рдЕрднреА рднреА рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣рд╛ рд╣реИ
Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ [email protected] рдХрд╛ рдЕрдкрдирд╛ рд╡рд╛рджрд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдХреНрдпрд╛ рд╡рд╣ рд╕рд╣реА рд╣реИ??
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ?
рдпрд╣ рдиреЗрд╡рд▓рд╛ рд╣реИ рдПрдХ es6-рд╡рд╛рджрд╛ lib рдЬреЛрдбрд╝реЗрдВред
рдЗрддрдирд╛ рдмреЗрд╡рдХреВрдл рдореБрджреНрджрд╛!
рдкреБрдирд╢реНрдЪ: рдЙрд╕ рдХрдордмрдЦреНрдд рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЕрдкрдиреА рдпреЛрдиреА рдХреЛ рднрдЧрд╛рдУ!
рдПрдХ рд╕рд╛рдереА рд░реВрд╕реА рд╡рдХреНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдХрдорддрд░ рдкреНрд░рд╛рдгреА рдиреЗ рдЖрдкрд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рди рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред
@ vkarpov15 рдореИрдВрдиреЗ mongoose.Promise = global.Promise;
рдФрд░ mongoose.Promise = require('bluebird');
рджреЛрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИред
_рдХреНрдпрд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореИрдВ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?_
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/users_test');
mongoose.connection
.once('open', () => {
console.log('connectecd to db')
})
.on('error', (err) => {
console.warn('Warning', err)
});
@protoEvangelium рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдиреЗрд╡рд▓реЗ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдиреЗрд╡рд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХреА рдЧрдИ рд╣реИ?
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк рдиреЗрд╡рд▓рд╛/рдиреЛрдб рдХрд╛ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
@varunjayaraman рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХрд╣реАрдВ рдФрд░ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЕрдкрдиреЗ user.js рд╕реНрдХреАрдорд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдиреЗрд╡рд▓рд╛ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const UserSchema = new Schema({
name: String,
})
const User = mongoose.model('user', UserSchema)
module.exports = User
рдиреЛрдб v7.0.0рдиреЗрд╡рд▓рд╛ v4.8.1
@protoEvangelium рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдпрд╛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рд╣реИ?
рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реБрдИ рд╣реИ - рдЕрдкрд░рд╛рдзреА рдПрдХ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдиреЗрд╡рд▓рд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдирдХреЗ package.json рдореЗрдВ "mongoose": "^4.1.1"
рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпреЗ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд░реНрд╖рд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреА) - рдЙрдирдореЗрдВ рд╡рд╛рджрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рднрд╛рдЧ рдХреА рдХрдореА рд╣реИред @protoEvangelium рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
@SAudelOG рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
@varunjayaraman рдореИрдВрдиреЗ рдХреЗрд╡рд▓ Mongoose рдФрд░ Mocha рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Mongo рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЕрдм рддрдХ рдПрдХ рдмреЗрдпрд░рдмреЛрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред
@Spown рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:
"mocha": "^3.2.0",
"mongoose": "^4.8.1",
"nodemon": "^1.11.0"
рдзрдиреНрдпрд╡рд╛рдж :)
@protoEvangelium рдПрдХ рдорд┐рдирдЯ рд░реБрдХрд┐рдП, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА?
const mongoose = require('mongoose')
mongoose.Promise = global.Promise // <--
const Schema = mongoose.Schema
const UserSchema = new Schema({
name: String,
})
const User = mongoose.model('user', UserSchema)
module.exports = User
рдпрджрд┐ рдЖрдк рдПрдХ рдиреЗрд╡рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╡рд╛рджрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрд╕ рдореЙрдбрд▓ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдлреЗрдВрдХ рджреЗрдЧреАред
@рд╕реНрдкреЙрди
рдореИрдВ рд╕рд╣реА рд╕рдордп рдкрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд╣реБрдЖред рдЬрдм рднреА рдореИрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реЗрдЬ рд░рд╣рд╛ рдерд╛, рдореБрдЭреЗ рд╡рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓ рд░рд╣реА рдереАред рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рдиреЗрд╡рд▓реЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдмреНрд▓реВрдмрд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдиреЗрд╡рд▓рд╛ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдкреНрд░реЙрдорд┐рд╕ рдиреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред
рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
@Spown рдзрдиреНрдпрд╡рд╛рдж рд╕рд░! рд╡рд╣ рдореБрджреНрджрд╛ рдерд╛ред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ Mongoose рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЕрдкрдиреА test_helper.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ mongoose.Promise = global.Promise;
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВрдиреЗ mongoose.Promise = global.Promise;
рдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рд╕реНрдХреАрдорд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!!! рдХреЛрдИ рдФрд░ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ
const mongoose = require('mongoose')
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema
рдореЗрд░реЗ рд╕реНрдХреАрдорд╛ рдореЗрдВ "рдЖрдмрд╛рджреА рдпреЛрдЧреНрдп" рд╡рд░реНрдЪреБрдЕрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореЗрд░реЗ рдРрдк рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде --trace-deprecations
, рдЖрдк рдЕрдкрд░рд╛рдзреА рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
(node:8846) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
at model.wrappedPointCut [as init] (/Users/fleavamini/Projects/stellium/stellium-express/node_modules/mongoose/lib/services/model/applyHooks.js:141:26)
at completeMany (/Users/fleavamini/Projects/stellium/stellium-express/node_modules/mongoose/lib/query.js:1254:12)
at Immediate.cb (/Users/fleavamini/Projects/stellium/stellium-express/node_modules/mongoose/lib/query.js:1117:13)
at Immediate.<anonymous> (/Users/fleavamini/Projects/stellium/stellium-express/node_modules/mquery/lib/utils.js:137:16)
at runCallback (timers.js:651:20)
at tryOnImmediate (timers.js:624:5)
at processImmediate [as _immediateCallback] (timers.js:596:5)
рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ):
import * as mongoose from "mongoose";
(<any>mongoose).Promise = global.Promise;
mongoose.connect('mongodb://localhost/blah')
рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдХреНрдпрд╛ рдореБрдЭреЗ "рдЖрдмрд╛рджреА рдпреЛрдЧреНрдп" рд╡рд░реНрдЪреБрдЕрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбрд▓ рдкрд░ рд╡рд╛рджрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд░реБрдХреЛ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ред
рдареАрдХ рд╣реИ, рдХреБрдЫ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рдЕрдкрдиреА рд╕реНрдХреАрдорд╛ рдкрд░ Promise
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ index
рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реЛред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, website_pages
рд╕рдВрдЧреНрд░рд╣ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХрднреА рднреА рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рд╕рдВрдЧреНрд░рд╣ рдерд╛, рдЗрд╕ рд╕реНрдХреАрдорд╛ рдкрд░ mongoose.Promise
рд╕реЗ global.Promise
рдХреА рд╕реНрдерд╛рдкрдирд╛ рдиреЗ рдЕрдХреЗрд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдерд╛ рдЗрд╕реЗ рд╕рднреА рд╕реНрдХреАрдорд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
ES6 рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ? рдХреНрдпрд╛ рд╡реЗ рдЕрдм рд╣рд░ рдЬрдЧрд╣ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ?
mongoose.Promise = Promise; // eh?
рдзрдиреНрдпрд╡рд╛рдж @Spown , рдореБрдЭреЗ рдЙрд╕реА рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдореЙрдбрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж mongoose.Promise = global.Promise
рд░рдЦрд╛ рдерд╛ред рдЕрдм рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдЪрд▓реА рдЧрдИ рд╣реИред
@Spown рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ mongoose.Promise = global.Promise
рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдиреЛрдб рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЪрдВрдЪрд▓ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ test_helpers.js рдкрд╣рд▓реЗ рд▓реЛрдб рд╣реЛ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдиреЗрд╡рд▓рд╛ рдХрд╛ рд╡рд╛рджрд╛ рдХрд╛рд░реНрдп рд╕реЗрдЯ рдХрд░ рд╕рдХреВрдВ?
рдХреНрдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐...
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ require
mongoose рдХрд░рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рд╕рднреА рдбреАрдмреА рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрдВрджрд░ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдмреБрд▓реЗрдЯрдкреНрд░реВрдлред рдФрд░ рдореИрдВ рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреАрдЬрд╝ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ (mongoose.connect() рдХреЗ рдмрдЬрд╛рдп mongoose.connect()
mongoose.createConnection()
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрдиреЗрдХреНрд╢рди) - рдЖрдкрдХреЛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдЬреБрдбрд╝реЗ рдиреЗрд╡рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗред рдЕрдиреНрдпрдерд╛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд┐ рдХреБрдЫ рдЕрдЬреАрдм рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рднреА рдмрджрддрд░ рд╣реИред
рд╣рд╛рдБ рдореИрдВ @Spown рдЬреИрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реВрдБред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬ рддрдХ рдиреЗрд╡рд▓реЗ рдХреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд░рдЦрдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬрдм рд╣рдо рдПрдордкреНрд░реЛрдорд╛рдЗрдЬ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ
libs/mongoose.js
import mongoose from 'mongoose'; // real mongoose only be required once here
mongoose.Promise = global.Promise; // so that you dont have to do this on every require
const Schema = mongoose.Schema;
export {
mongoose as default, // kind of singleton
mongoose,
Schema,
};
index.js
import mongoose from './libs/mongoose';
mongoose.connect(process.env.MONGODB_URI);
рдореЙрдбрд▓/user.js
import {mongoose, Schema} from '../libs/mongoose';
export default mongoose.model('User', new Schema({
name: String,
password: String,
}));
@ рд╣реЙрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ() рдХреЙрд▓ рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреАрдорд╛ рдШреЛрд╖рдгрд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рджрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХреБрдЫ:
mongoose.setPromise(global.Promise);
@ рд╢-рдЧреБрдЯреА рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдХреЛрдб рдХрд╛ рд╡рд╣ рдЯреБрдХрдбрд╝рд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдпрд╛ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЬрд╝реЛрд░ - рдЬрд╝реЛрд░ рд╕реЗ рд╣рдВрд╕рдирд╛ред
рдЙрдкрдпреЛрдЧ
mongoose.createConnection(URI)
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкреГрдереНрд╡реА рдкрд░ рдиреЗрд╡рд▓реЗ рджреЗрд╢реА рд╡рд╛рджреЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рдЗрдирдХрд╛рд░ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдкрд┐рдЫреЗрдбрд╝реА рд╕рдВрдЧрддрддрд╛ред рдиреЛрдб 4 рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Mongoose 4.x рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рдерд╛ред рд╣рдо рдЕрдЧрд▓реА рдмреИрдХрд╡рд░реНрдб рдмреНрд░реЗрдХрд┐рдВрдЧ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рдХрдм рд╣реЛрдЧрд╛?
mongoose.createConnection(URI) рдиреЗрд╡рд▓рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдмрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдШрдВрдЯреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЧрдпрд╛
mongoose.connect(process.env.MONGODB); mongoose.createConnection рд╕реЗ (process.env.MONGODB)
рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рдиреЗ рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ .. рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ ...
@MickL рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдЧрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдПрдХ рдЖрд░рд╕реА0 рдЖрдЙрдЯ рд╣реЛрдЧрд╛, рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдиреЗрд╡рд▓рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд▓реИрдХ рдЪреИрдирд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛
mongoose.connect . рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ