μ΄ κ²½κ³ λ₯Ό λ°κ³ μμ΅λλ€
(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);
λλΌμ΄λ²λ Driver ν΄λμ€μ μΈμ€ν΄μ€μ λλ€.
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;
}
}
λ΄κ° λ μλͺ»νκ³ μλμ§μ λν μ΄λ€ μκ°?
ν μ΄λμμλ promiseλ₯Ό μ¬μ©νκ³ μμ΅λκΉ? μ½μμ μ¬μ©νμ§ μλ ν μ΄ κ²½κ³ λ₯Ό λ°μμλ μ λ©λλ€...
μλ, λλ μ½μμ μ¬μ©νμ§ μλλ€
μ λ μ΄ λ¬Έμ λ₯Ό μ΄μ λ§ μμνμ΅λλ€. λ΄κ° μλ μ½μμ μ¬μ©νμ§ μμ΅λλ€!
λλ κ·Έ κ²½κ³ λ₯Ό ν΄κ²°νλ€.
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;
};
μ, μ΄ κ²½κ³ λ λΉμ μ΄ promiseλ₯Ό μ¬μ©νκ³ μλ€λ©΄ mongooses default promise libλ₯Ό λ³κ²½νλΌκ³ λ§ν΄μΌ νμ§λ§, .thenμ μ΄λκ°μμ νΈμΆνμ§ μλ ν λ°μν΄μλ μλ©λλ€.
λλ κ·Έκ²μ μ»κ³ μμ§λ§ λλ κ°μ²΄λ₯Ό μ μ₯ ν λ€μ μ½λ°±μμ μμ νκ³ λ€μ μ μ₯νλ κ³³μμλ§ κ·Έκ²μ μ»μ΅λλ€.
mongoose μ°κ²° μ μ mongooseμ μ½μμ ν λΉνκΈ° μν΄ @SAudelOG μ κ·Ό λ°©μμ μλνμ§λ§ μ¬μ ν μ΄ μ€λ₯κ° λ°μν©λλ€.
λΉλκΈ° ν¨μ es7μ μ¬μ© μ€μ΄κ³ Model.findOne({})μ μλν λ μ½λκ° μ°¨λ¨λ©λλ€.
@SAudelOG κ° μ 곡νλ μ루μ μ΄ μλν©λλ€. @IrishAdo μ λ§μ°¬κ°μ§λ‘ κ°μ²΄λ₯Ό μ μ₯ν λλ μ΄κ²μ μ»μ΅λλ€. μλ§λ Bluebird Promise λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ λͺ½κ΅¬μ€ νλ¬κ·ΈμΈ μ€ νλ λλ¬ΈμΌ κ²μ λλ€.
λ€μμ λ΄κ° μ¬μ©νλ μ’ μμ± λͺ©λ‘μ λλ€.
"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)
νμ λ¬Έμκ° μλ λ€λ₯Έ 컬λ μ μμλ λ°μνμ§ μμΌλ©° λ€μκ³Ό κ°μ΄ νμ λ¬Έμ λ°μ΄ν° μμ΄ create λ¬Έμ μ€νν΄λ λ°μνμ§ μμ΅λλ€.
var data = {
field: 'value'
}
mySchema.create(data, cb)
_μ°Έκ³ :_ mongoose.Promise = global.Promise
λ κ²½κ³ λ¬Έμ λ₯Ό ν΄κ²°νμ§λ§
λ¬Έμμμ remove()
λ₯Ό μ¬μ©ν λ λμΌν κ°κ°μκ° κ²½κ³ κ° λ°μν©λλ€. μ¬κΈ° λλ λ΄ μ½λμ λ€λ₯Έ κ³³μμ μ½μμ μ¬μ©νμ§ μμ΅λλ€.
Model.create(objects, callback);
λ₯Ό μ¬μ©ν λ μ΄ μ€λ₯κ° λ°μνμ΅λλ€. μλ§λ μ΄ μμ μ¬νμ΄ μμ§ npmμ κ²μλμ§ μμμ΅λκΉ?
μ΄κ²μ μ½κ³ κΈ°λ»νλ κ²μ λλΌμ΄ μΌμ΄ μλλλ€. μ΄ λ¬Έμ κ° λ°μν λ λλ²κΉ μ λκΈ° μν΄ κ³μ μμΈν μ΄ν΄λ³΄κ² μ΅λλ€.
μ΄κ²λ μ»κ³ λλ λͺ½κ΅¬μ€ μ½μμ μ΄λμλ μ¬μ©νμ§ μμ΅λλ€.
λΌμ΄λΈλ¬λ¦¬ on-headers μ½λ°± λ΄λΆμ model.save
νΈμΆλ‘ λ€μ μΆμ ν μ μμκ³ λͺ¨λΈμ νΈμΆλκΈ° μ μ μ½λ°± μΈλΆμμ μμ±λμμ΅λλ€. μ½λ°± λ΄μ λͺ¨λΈ μμ±κ³Ό μ μ₯ νΈμΆμ λͺ¨λ λ£μ΄λ μ°¨μ΄κ° μμ΅λλ€.
λ Έλ v4.4.6μμ μ΄ λ¬Έμ μ μ§λ©΄νλ λ°λ©΄ v4.4.2μμλ μλνλ κ² κ°μ΅λλ€.
@SKatiyar μ½λ μν λΆνλ립λλ€
μ μ λμΌνκ² save() λ©μλλ₯Ό νΈμΆν ν μ΄ λ©μμ§κ° νμλ©λλ€.
μ΄κ²μ μλν©λλ€! 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 μ, νμ¬ μμλλ λμμ λλ€. μ½λ°±μ μ λ¬νλλΌλ μ μ₯μ νμ μ½μμ λ°νν©λλ€.
κΈμ, λλ κ·Έκ²μ΄ μ¬λλ€μ΄ κ·Έλ€μ΄ μ½μμ μ¬μ©νκ³ μλ€κ³ μκ°νμ§ μμ λμλ μ½μ κ²½κ³ λ₯Ό 보λ μ΄μ λ₯Ό μ΅μν μ€λͺ ν κ²μ΄λΌκ³ μκ°ν©λλ€.
κ·Έκ²μ΄ λͺ¨λ κ²μ μ€λͺ ν©λλ€. λλ μ½κ° νΈμ§μ¦μ μ΄μ΄μ λͺ¨λ κ²½κ³ λ₯Ό μμ κ³ μΆμμ΅λλ€ π
λ΄ μλͺ»μ λλ€. yup .save()κ° μ½μμ λ°ννλ―λ‘ μ΄κ²μ΄ μμλμ§λ§ μ¬μ ν κ²½κ³ λ‘ μΈν΄ κΆκΈνμ΅λλ€. http://mongoosejs.com/docs/promises.html (첫 λ¨λ½ π±λ§ μ½μ΄μΌ ν¨)
λ°λΌμ .save()
λ μ½μμ λ°ννμ§λ§ .then()
λ₯Ό νΈμΆνμ§ μλ ν μ΄ κ²½κ³ λ₯Ό λ°μ§ μμμΌ ν©λλ€. μ½λμμ .then()
λ₯Ό νΈμΆνμ§ μκ³ μ΄ κ²½κ³ κ° νμλλ©΄ λͺ½κ΅¬μ€κ° ν΄μλ μ λλ κ³³μμ μ½μμ μ¬μ©νκ³ μλ€λ μλ―Έμ΄λ―λ‘ μ½λ μνκ³Ό ν¨κ» λ³λμ λ¬Έμ λ₯Ό μ¬μμμ€.+1:
IMHO, μ΄ λ©μμ§λ μ€μ λ‘ μ½λ°±μμ μ€λ₯λ‘ λ°νλκΈ° λλ¬Έμ κ²½κ³ ("μ£Όμνμ§λ§ μλν΄μΌ ν¨")κ° μλλΌ μ€λ₯("μΌμ΄ μλνμ§ μμ")μ¬μΌ ν©λλ€.
μ΄ λ¬Έμ μ λΆλͺμ³€κ³ aModel.save() λ©μλκ° MongoDBμ λ£μ§ λͺ»νμ΅λλ€. μ΄ λ¬Έμ μ κ·Όλ³Έ μμΈμ νμ νλ λ° μκ°μ΄ μ’ κ±Έλ Έμ΅λλ€. "mongoose.Promise = global.Promise;"λ₯Ό μ μ©ν ν μ±κ³΅νμ΅λλ€.
λλ "λͺ½κ΅¬μ€": "^4.5.9"λ₯Ό μ¬μ©νκ³ μμμ΅λλ€.
Saveλ κΈ°λ³Έ promise libμμ μ μλν΄μΌ ν©λλ€. μ½λ μνμ μ 곡ν μ μμ΅λκΉ?
@vkarpov15
λ€κ° μ³μ. λ°©κΈ κ²½κ³ μ ν¨κ» μ°¨λ¨ μ μ₯ κ²°κ³Όλ₯Ό μ²μλΆν° λ€μ λ§λ€λ €κ³ μλνμ§λ§ μ€ν¨νμ΅λλ€.
λ΄ νλ‘μ νΈμ λ€λ₯Έ μ½λμ κ΄λ ¨μ΄ μλμ§ νμ€νμ§ μμ΅λλ€. νμΈνλ μκ°μ΄ νμν©λλ€. μμΈμ μ°ΎκΈ° μ μ 무μνμμμ€.
μ λ₯Ό μν΄ μ΄ λ‘κ·Έλ .then()μ μ¬μ©ν λλ§λ€ μ½μμ λνλ©λλ€. mongoose κ°μ²΄ λλ mongooseμ κ΄λ ¨μ΄ μλ λ€λ₯Έ κ°μ²΄μ ν¨κ» μ¬μ©λλμ§ μ¬λΆλ μ€μνμ§ μμ΅λλ€.
κ·Έλμ, λ¬Έμ μ λ°λ₯΄λ©΄, λλ μ λ¬ν©λλ€
'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');
λ _μλλ€_ μ³μ΅λλ€.
@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
μ΅μ
μ΄ mongoose λͺ¨λΈμ΄ μλ κΈ°λ³Έ mongodb λλΌμ΄λ²μλ§ μν₯μ λ―ΈμΉλ€λ κ²μ μ μ μμ΅λλ€.
@zubair-farooqui-10p μλ μ€ν¬λ¦½νΈλ 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;
μ΄ μΆκ° μ€μ μΆκ°ν΄μΌ νλ κ²μ μ λ§ μ§μ¦λλ μΌμ λλ€. λͺ½κ΅¬μ€κ° λ΄λΆ λΌμ΄λΈλ¬λ¦¬μμ μ΄λ₯Ό κ³ μΉ μ μλ λ°©λ²μ΄ μμ΅λκΉ? κ°μ¬ ν΄μ!
μΌλ°μ μΌλ‘ mongooseμ promise lib μ ν λ©μ»€λμ¦μ΄ μλνλ λ°©μμ mongodb λλΌμ΄λ²μ λ°©μκ³Ό μλΉν λ€λ₯΄κΈ° λλ¬Έμ λλ€. mongooseμμλ mongoose μ μ κ°μ²΄μ μΈμ λ μ§ μ€μ ν μ μλ μμ±μΌ λΏμ΄μ§λ§ mongodb λλΌμ΄λ²μμλ μ°κ²° μ΅μ μ΄λ―λ‘ μ°κ²°λ§λ€ λ€λ₯Έ promise λΌμ΄λΈλ¬λ¦¬κ° μμ μ μμ§λ§ μ°κ²°ν λλ§ promise 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...
λ€, κ·Έλ κ² ν΄μΌ ν©λλ€. Mongoose 4.xλ μ¬μ©μκ° λ§νμ§ μμ λκΉμ§ mpromiseλ₯Ό μ¬μ©ν©λλ€.
쿼리 λμ°λ―Έμ ν¨κ» μΌλ° find() νΈμΆμ μ¬μ©ν λ μ΄κ²μ λ³Ό μ μμ΅λλ€. λλ μ΄λμλ then
λ₯Ό μ¬μ©νμ§ μμ΅λλ€.
BookStore.find().byUsingQueryHelper(1,2,3).lean().exec(function (err, docs) { ... })
ν΅λ무:
λͺ½κ΅¬μ€: bookstores.find({ μμΉ: { '$near': [ 28.742712943610545, -13.865369983731426 ], '$maxDistance': ), μ μλμ§ μμ: 0.001255689844608}817 νλ
(node:82366) DeprecationWarning: Mongoose: mpromise(mongooseμ κΈ°λ³Έ promise λΌμ΄λΈλ¬λ¦¬)λ λ μ΄μ μ¬μ©λμ§ μμ΅λλ€. λμ μμ μ promise λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°κ²°νμΈμ. http://mongoosejs.com/docs/promises.html
@pronebird λΆννλ μ΄κ²μ΄ exec()
κ° λ΄λΆμ μΌλ‘ μλνλ λ°©μμ΄λ©° exec()
μ λν μ½λ°±μ μ€μ λ‘ μ½μμ κ±°μΉ©λλ€. mongoose.Promise = global.Promise
νλ©΄ λ μ΄μ κ²½κ³ κ° νμλμ§ μμ΅λλ€.
@pronebird κ²μν λ λμΌν μ€λ₯κ° λ°μνκ³ λ΄ μ€ν€λ§μ μλμ κ°μ κΈ°λ³Έκ°μ΄ μκ³ κ²μλ κ°κ³Ό μΌμΉνμ§ μλλ€λ κ²μ μμμ΅λλ€.
μν : {
μ ν: λ¬Έμμ΄,
μ΄κ±°ν: ['ν΄λΌμ΄μΈνΈ', 'κ΄λ¦¬μ'],
κΈ°λ³Έκ°: 'ν΄λΌμ΄μΈνΈ'
}
λλ μν :admin μ κ²μνκ³ Adminμ΄μ΄μΌ ν©λλ€.
μ΄ λ΅λ³μ΄ λκ΅°κ°λ₯Ό λκΈ°λ₯Ό λ°λλλ€. κ°μ¬
@Muhammedalbayati κ·νμ λ¬Έμ κ°μ΄ νΉμ λ¬Έμ μ κ΄λ ¨μ΄ μλ€κ³ μκ°νμ§ μμ΅λκΉ? κ·Έκ²μ λ¨μ§ μ½μμ κ΄ν΄ λͺ½κ΅¬μ€κ° λ°νν κ²½κ³ μΌ λΏμ λλ€.
@varunjayaraman λΉμ λ§μ΄ λ§μ, λλ λ€μμ μΈκΈν΄μΌν©λλ€
κ²½κ³
DeprecationWarning: Mongoose: mpromise(mongooseμ κΈ°λ³Έ νλΌλ―Έμ€ λΌμ΄λΈλ¬λ¦¬)λ λ μ΄μ μ¬μ©λμ§ μμ΅λλ€. λμ κ³ μ ν νλΌλ―Έμ€ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ°κ²°νμΈμ. http://mongoosejs.com/docs/promises.html
mongoose.Promise = global.Promiseλ₯Ό μΆκ°νλ©΄ μ¬λΌμ§λλ€. dbμ μ μνκΈ° μ μ
mongoose.connect('mongodb://localhost:27017/mydb');
@Muhammedalbayati @vkarpov15 κ° μ΄ κ²½κ³ κ° λνλλ μ΄μ λ₯Ό μ€λͺ
νλ€κ³ μκ°ν©λλ€. λͺ½κ΅¬μ€λ exec
λ΄μμ λ΄λΆμ μΌλ‘ promiseλ₯Ό μ¬μ©ν©λλ€.
ES6 "yiled"λ mongooseλ₯Ό v.4.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] μλ μ체 promise λͺ¨λμ΄ μλ κ² κ°μ΅λλ€. λ§λμ??
μ무λ κ·Έκ²μ μκ³ μμ΅λκΉ?
λͺ½κ΅¬μ€λ es6-promise 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 μ±μ λ€λ₯Έ κ³³μμ λͺ½κ΅¬μ€λ₯Ό κ°μ Έμ€κ³ μμ΅λκΉ? mongooseκ° μ²μ μ¬μ©λλ κ²μ λκΉ μλλ©΄ μ΄ νμΌμ λ€λ₯Έ νμΌλ‘ κ°μ Έμ€λ κ²μ λκΉ?
λν μ΄λ€ λ²μ μ mongoose/nodeλ₯Ό μ¬μ©νκ³ μμ΅λκΉ?
@varunjayaraman μ΄ νμΌμ λ€λ₯Έ κ³³μμ κ°μ Έμ€μ§ μμ΅λλ€. κ·Έλ¬λ user.js μ€ν€λ§ νμΌμμ mongooseλ₯Ό κ°μ Έμ¨ λ€μ μΌλΆ ν μ€νΈμμ ν΄λΉ μ¬μ©μ μ€ν€λ§λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
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"
μ κ°μ νλͺ©μ΄ μμ§λ§ μ΄λ¬ν λͺ¨λμ 맀λ
μ
λ°μ΄νΈλκΈ° λλ¬Έμ(μ ν μλ κ²½μ°) Promise κ΅¬μ± λΆλΆμ΄ λΆμ‘±ν©λλ€. @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
μ½μμ΄ μ¬μ μλμ§ μμ λͺ½κ΅¬μ€ μΈμ€ν΄μ€μμ λͺ¨λΈμ μμ±νλ©΄ μ΄ λͺ¨λΈμ λν λͺ¨λ 쿼리μμ κ²½κ³ κ° λ°μν©λλ€.
@Spawn
μ μ ν μκΈ°μ μ΄ μ€λ λμμ λ°μνμ΅λλ€. μ 보λ₯Ό μ μ₯ν λλ§λ€ λμΌν κ²½κ³ λ₯Ό λ°μμ΅λλ€. λλ λͺ½κ΅¬μ€μ μΈμ€ν΄μ€μμ λͺ¨λΈμ λ§λ€κ³ μμκ³ κ·Έκ²μ μ¬μ μνμ§ μμμ΅λλ€. bluebirdκ° νμνκ³ mongoose.Promiseλ‘ μ€μ νλ©΄ μ€λ₯ λ©μμ§κ° ν΄κ²°λμμ΅λλ€.
μ λ§ κ³ λ§μ!
@Spawn κ°μ¬ν©λλ€ μ μλ! κ·Έκ²μ΄ λ¬Έμ μμ΅λλ€. ν₯λ―Έλ‘κ²λ μ λ 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)
μ½μμ μ€μ νμ΅λλ€(TypeScriptλ₯Ό μ¬μ©νκ³ μμ).
import * as mongoose from "mongoose";
(<any>mongoose).Promise = global.Promise;
mongoose.connect('mongodb://localhost/blah')
μ΄λ€ μμ΄λμ΄? "μ±μΈ μ μλ" κ°μμ μ¬μ©νλ λͺ¨λ λͺ¨λΈμ μ½μμ μ€μ ν΄μΌ ν©λκΉ? μ μλ§μ. μ€μ λ‘ μλν΄ λ³΄κ³ μ΄λ»κ² λμλμ§ λ€μ μλ €λλ¦¬κ² μ΅λλ€.
μ’μ, μ½κ°μ λμ§ νμ, λ΄ μλ²μ index
μ μ€μ ν κ²½μ°μλ μ¬μ ν λ΄ μ€ν€λ§μ Promise
λ₯Ό μ€μ ν΄μΌ νλ€λ κ²μ μμλμ΅λλ€.
μ κ²½μ°μλ website_pages
컬λ μ
μ΄ λ΄ μμ€ν
μμ 쿼리λ₯Ό λ°μ 첫 λ²μ§Έ 컬λ μ
μ΄μμ΅λλ€. μ΄ μ€ν€λ§μμλ§ mongoose.Promise
λ₯Ό global.Promise
λ‘ μ€μ νλ©΄ λ¬Έμ κ° ν΄κ²°λμμΌλ©° μ λ λͺ¨λ μ€ν€λ§μμ μ€μ ν νμκ° μμ΅λλ€.
ES6 Promiseλ₯Ό μ¬μ©νμ§ μλ μ΄μ λ 무μμ λκΉ? μ΄μ λͺ¨λ κ³³μμ μ¬μ©ν μ μμ§ μμ΅λκΉ?
mongoose.Promise = Promise; // eh?
@Spown λλΆμ λͺ¨λΈμ κ°μ Έμ¨ ν mongoose.Promise = global.Promise
λ₯Ό λ£μκΈ° λλ¬Έμ λμΌν μ¬μ© μ€λ¨ κ²½κ³ μ μ§λ©΄νμ΅λλ€. μ΄μ μ¬μ© μ€λ¨ κ²½κ³ κ° μ¬λΌμ‘μ΅λλ€.
@Spown μ΄ μΈκΈν λλ‘ λͺ¨λΈ νμΌμμ mongoose.Promise = global.Promise
λ₯Ό μ μΈνλ©΄ μλν©λλ€. μ΄κ²μ λ
Έλμ νμ λͺ¨λ μΊμ± λλ¬Έμ
λλ€. μ΄κ²μ λ³λμ€λ¬μ 보μ΄μ§λ§. μ΄ νμΌμ mongooseμ promise ν¨μλ₯Ό μ€μ ν μ μλλ‘ test_helpers.js κ° λ¨Όμ λ‘λλλλ‘ νλ λ°©λ²μ΄ μμκΉμ?
보μ₯ν λ°©λ²μ΄ μμκΉμ...
κ°μΈμ μΌλ‘ λλ require
mongooseλ₯Ό λ΄ νλ‘μ νΈμμ ν λ²λ§ μνν λ€μ μ μ Singleton κ°μ²΄μ λ£κ³ λͺ¨λ DB λͺ©μ μΌλ‘ λͺ¨λ κ³³μμ μ¬μ©ν©λλ€. μ νν μ°μνμ§λ μμ§λ§ λλΆλΆ λ°©νμ
λλ€. μ¬μ©μ μ§μ μ°κ²°μ μ¬μ©νλ κ²½μ°($ mongoose.connect()
mongoose.createConnection()
λ₯Ό ν΅ν΄ μ°κ²°) - λͺ¨λΈμ μμ±ν΄μΌ νκΈ° λλ¬Έμ μ¬μ© μ€λ¨λκΈ° ν¨μ¬ μ μ μ΄ μμ
μ μνν΄ μμ΅λλ€. μ΄ μ°κ²°μ μ°κ²°λ λͺ½κ΅¬μ€ μΈμ€ν΄μ€μμ. κ·Έλ μ§ μμΌλ©΄ μ±κ°μ κ²½κ³ λ³΄λ€ ν¨μ¬ λ λμ μ ν μλνμ§ μμ΅λλ€.
μ, @Spownκ³Ό λμΌν©λλ€. νμ€ν μ΄μμ μ΄μ§λ μμ§λ§ mpromiseλ₯Ό μμ ν μ¬μ©νμ§ μμ μ μλ λ€μ μ£Όμ 릴리μ€κΉμ§ mongooseλ₯Ό μ΄μ λ²μ κ³Ό νΈνλλλ‘ μ μ§νλ μ μΌν λ°©λ²μ λλ€.
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);
λͺ¨λΈ/μ¬μ©μ.js
import {mongoose, Schema} from '../libs/mongoose';
export default mongoose.model('User', new Schema({
name: String,
password: String,
}));
@howard require() νΈμΆμ΄ μΊμλ©λλ€.
λ°λΌμ μ¬λ°λ₯΄κ² μ΄ν΄νλ€λ©΄ ν κ³³μμλ§ μννλ λμ λͺ¨λ μ€ν€λ§ μ μΈ μ μ μ½μμ μ€μ ν΄μΌ ν©λλ€(μ: μμΈ νμΌ λλ μ°κ²° μ€μ μμΉ).
μ΄κ²μ μ’μ μ΅κ΄μ΄ μλλ©° λ€μκ³Ό κ°μ ν¨μλ‘ λ³κ²½νλ κ²μ κ³ λ €ν΄ λ³Ό κ°μΉκ° μμ΅λλ€.
mongoose.setPromise(global.Promise);
@sh-guti μ μκ°μλ κ°μ λ¬Έμ κ° μμκ³ κ·Έ μ½λκ° κ·Έκ²μ ν΄κ²°νμ΅λλ€.
μ΄ μμ μμ μ½λ°±μ΄λ μ½μμ μ¬μ©ν΄μΌ νλμ§ λͺ¨λ₯΄κ² μ΅λλ€. γ γ γ .
μ¬μ©
mongoose.createConnection(URI)
μ μ§κ΅¬ λͺ½κ΅¬μ€λ λ€μ΄ν°λΈ νλΌλ―Έμ€μ μ‘΄μ¬λ₯Ό κ±°λΆνκ³ μ¦μ μ¬μ©ν μ μλμ§ μ€λͺ ν μ μμ΅λκΉ?
μ΄μ λ²μ κ³Όμ νΈνμ±. Mongoose 4.xλ λ Έλ 4κ° μΆμλκΈ° μ μ 1λ λκ² μμμ΅λλ€. λ€μ μλ°©ν₯ μ£Όμ 릴리μ€λ‘ μ ννκ² μ΅λλ€.
μΈμ κ° λ κΉμ?
mongoose.createConnection(URI) μ Mongoose μμ λ§€μ° μ΄μν λ²κ·Έλ₯Ό μΌμΌν΅λλ€ . μΏΌλ¦¬κ° μλνμ§ μλ λλ²κΉ μκ°μ΄ μμ΅λλ€. κ²°κ΅ λ€μ κ°λ€
mongoose.connect(process.env.MONGODB); mongoose.createConnection(process.env.MONGODB)μμ
μ°Έκ³ λ‘ κ°κ°μκ° κ²½κ³ λ₯Ό μ€μ§νμ§λ§ λͺ¨λ μλμ μ€μ§νμ΅λλ€ ...
@MickL μμΌλ‘ λͺ μ£Ό μμ rc0μ΄ λμ¬ μμ μ λλ€. νΈμν°μμ mongooseλ₯Ό νλ‘μ°νκ±°λ slack μ±λμ κ°μ νμ¬ μ λ°μ΄νΈλ₯Ό λ°μΌμΈμ.
κ°μ₯ μ μ©ν λκΈ
λλ κ·Έ κ²½κ³ λ₯Ό ν΄κ²°νλ€.
mongoose.connectλ₯Ό νΈμΆνκΈ° μ§μ