ãã®èŠåã衚瀺ãããŸã
(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ã¯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ã䜿çšããªãéãããã®èŠåã¯è¡šç€ºãããªãã¯ãã§ã...
ãããã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ã䜿çšããŠããå Žåã¯ããã³ã°ãŒã¹ã®ããã©ã«ãã®promise libãå€æŽããããã«æ瀺ããã¯ãã§ããã.thenãã©ããã§åŒã³åºããªãéããçºçããªãã¯ãã§ãã
ç§ã¯ãããååŸããŠããŸããããªããžã§ã¯ããä¿åããŠããã³ãŒã«ããã¯ã§å€æŽããŠå床ä¿åããå Žæã§ã®ã¿ååŸããŠããŸã
@SAudelOGã¢ãããŒããè©ŠããŠããã³ã°ãŒã¹ãæ¥ç¶ããåã«ãã³ã°ãŒã¹ã«ãããã¹ãå²ãåœãŠãŸããããããã§ããã®ãšã©ãŒãçºçããŸã
éåæé¢æ°es7ã䜿çšããŠããŸãããModel.findOneïŒ{}ïŒãå®è¡ããããšãããšã³ãŒãããããã¯ãããŸã
@SAudelOGãæäŸãããœãªã¥ãŒã·ã§ã³ã¯æ©èœããŸãã @IrishAdoã®ããã«ããªããžã§ã¯ããä¿åãããšãã«ã®ã¿ãããååŸããŸãã ãããããBluebirdpromiseã©ã€ãã©ãªã䜿çšããŠäœ¿çšããŠãããã³ã°ãŒã¹ãã©ã°ã€ã³ã®1ã€ãåå ã§ãã
ãããç§ã䜿çšããŠããäŸåé¢ä¿ã®ãªã¹ãã§ã
"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"
}
ãã©ã°ã€ã³ãpromiseã䜿çšããŠãããããã®èŠåã衚瀺ãããŸãïŒ[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()
ã䜿çšãããšãåãæžäŸ¡ååŽèŠåã衚瀺ãããŸãã ç§ã¯ãããã³ãŒãã®ä»ã®å Žæã§promiseã䜿çšããŠããŸããã
Model.create(objects, callback);
ã䜿çšããŠãããšãã«ãã®ãšã©ãŒãçºçããŸãããããããããã®ä¿®æ£ã¯ãŸã npmã«å
¬éãããŠããŸãããïŒ
ãããæã«å ¥ããŠããããèªãã§ããããããšã¯å¿é ã§ã¯ãããŸããã ãããçºçããå Žåã®ãããã°ã«åœ¹ç«ãŠãããã«ãããã詳ãã調ã¹ãŠãããŸãã
ãããååŸããŠããŠããã³ã°ãŒã¹ã®çŽæã¯ã©ãã«ã䜿çšããŠããŸããã
ã©ã€ãã©ãªã®ãªã³ããããŒã®ã³ãŒã«ããã¯å
ã®model.save
åŒã³åºããŸã§ããã®ãŒãããšãã§ããŸãããã¢ãã«ã¯ã誰ãã«åœ¹ç«ã€å Žåã«åããŠãåŒã³åºãããåã«ã³ãŒã«ããã¯ã®å€ã§äœæãããŸããã ã¢ãã«ã®äœæãšä¿åã®äž¡æ¹ã®åŒã³åºããã³ãŒã«ããã¯å
ã«çœ®ããŠãéãã¯ãããŸããã
ããŒãv4.4.6ã§ã¯ãã®åé¡ã«çŽé¢ããŠããŸãããv4.4.2ã§ã¯ããã¯æ©èœããŠããããã§ã
@SKatiyarã³ãŒããµã³ãã«ããé¡ãããŸã
ç§ãšåãããã«ãsaveïŒïŒã¡ãœãããåŒã³åºããåŸã«ãã®ã¡ãã»ãŒãžãåãåãã®ã§ãæ°ã«ããã®ã«ååã§ã
ããã¯ããŸããããŸãïŒ mongoose.connect(MONGO_URI);
åã«$ïŒ$ 1 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)
ã䜿çšããŠãpromiseãè¿ãããããšã§ãïŒãŸãã¯ã .then
ã®ã¿ã€ãã¯'function'
ã§ããããããããpromiseã§ãããšæ³å®ããŠããŸãïŒã ããã¯äºæ³ãããåäœã§ããïŒ
ãããç§ã®ããŒãžã§ã³ã§ãïŒ
ããŒãïŒ v6.3.1
ãã³ã°ãŒã¹ïŒ v4.5.8
ä»ã«æ å ±ãå¿ èŠãªå Žåã¯ãç¥ãããã ããã
@dvlsgã¯ããããã¯çŸåšäºæ³ãããåäœã§ããã³ãŒã«ããã¯ãæž¡ããŠããsaveã¯åžžã«promiseãè¿ããŸãã
ãŸããããã¯å°ãªããšããçŽæã䜿çšããŠãããšã¯æããªãã®ã«ããªã人ã ãçŽæã®èŠåãèŠãŠããã®ãã説æããŠãããšæããŸãã
ããã¯ãã¹ãŠã説æããŸã..ç§ã¯å°ãåŠæ³çã§ããã¹ãŠã®èŠåãåãé€ããããšæã£ãŠããŸããð
ããã¯ç§ã®ããã§ãããã.saveïŒïŒã¯çŽæãè¿ãã®ã§ãããã¯äºæ³ãããŸãããããã§ããèŠåã¯ç§ã«äžæè°ã«æããŸããã http://mongoosejs.com/docs/promises.html ïŒæåã®æ®µèœãèªãå¿ èŠããããŸããð±ïŒ
ãããã£ãŠã .save()
ã¯promiseãè¿ããŸããã .then()
ãåŒã³åºããªãéãããã®èŠåã¯è¡šç€ºãããŸããã ã³ãŒãã§.then()
ãåŒã³åºããã«ãã®èŠåã衚瀺ãããå Žåã¯ãmongooseãpromiseã䜿çšããŠã¯ãããªãå Žæã§äœ¿çšããŠããããšãæå³ãããããã³ãŒããµã³ãã«ã§å¥ã®åé¡ãéããŠãã ããïŒ+1ïŒ
ç§èŠã§ããããã®ã¡ãã»ãŒãžã¯å®éã«ã¯ã³ãŒã«ããã¯ã§ãšã©ãŒãšããŠè¿ããããããèŠåïŒã泚æããŠãã ãããåäœããã¯ãã§ããïŒã§ã¯ãªããšã©ãŒïŒãåäœããŸãããïŒã§ããå¿ èŠããããŸãã
ç§ã¯ãã®åé¡ã«ééããMongoDBã«å ¥ããããã«aModel.saveïŒïŒã¡ãœãããæ©èœããŸããã§ããã ãã®åé¡ã®åå ãçªãæ¢ããã®ã«å°ãæéãããããŸããã ãmongoose.Promise = global.Promise;ããé©çšããåŸãæåããŸããã
ç§ã¯ããã³ã°ãŒã¹ãã䜿çšããŠããŸããïŒã^ 4.5.9ãã
ä¿åã¯ããã©ã«ãã®promiselibã§æ£åžžã«æ©èœããã¯ãã§ãããã³ãŒããµã³ãã«ãæäŸã§ããŸããïŒ
@ 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');
ã¯æ£ãããããŸããã
@ vkarpov15ç§ã¯http://mongoosejs.com/docs/promises.html#promises-for-the-mongodb-driverãåç §ããŠããŸã
ããã¯ãŸã æå¹ã§ããïŒ ãã®ãªãã·ã§ã³ïŒ promiseLibrary
ïŒããŸã æ§æã§ãµããŒããããŠããããåé€ãããŠãããã©ãããã³ãŒãã§ç¢ºèªããæéããããŸããã
ãã ãã mongoose.Promise = global.Promise
ã®èšå®ã¯æ©èœããŸãã
mongoose.Promise = global.Promise
mongoose.connect
ãç§ã®ããã«ãåãåã«ã
ç§ã¯promiseã䜿çšããŠããããæ¥ç¶ãæ©èœããåã«mongoose.Promise = global.Promise
ãåŒã³åºããŠããŸãã
@ manu29dãããã®ããã¥ã¡ã³ãã¯æ£ããã§ãããå®éã«èªãã å Žåã promiseLibrary
ãªãã·ã§ã³ã¯ãåºç€ãšãªãmongodbãã©ã€ããŒã§ãã_not_mongooseã¢ãã«ã«ã®ã¿åœ±é¿ããããšãããããŸãã
@ 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 libãæã€ããšãã§ããŸãããpromiselibãèšå®ã§ããã®ã¯æ¥ç¶ããŠãããšãã ãã§ãããã®åŸã§ã¯ãããŸããã ãããã®éãã調æŽããããšã¯å®éã«ã¯åªå äºé ã§ã¯ãããŸããã
æååã®é åãå«ãããã¥ã¡ã³ããä¿åãããšãã«ãããçºçããçç±
.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ïŒ{locationïŒ{'$ near'ïŒ[28.742712943610545ã-13.865369983731426]ã '$ maxDistance'ïŒ0.0012556898446083817}}ã{limitïŒ10ãfieldsïŒundefined}ïŒ
ïŒnodeïŒ82366ïŒéæšå¥šèŠåïŒMongooseïŒmpromiseïŒmongooseã®ããã©ã«ãã®promiseã©ã€ãã©ãªïŒã¯éæšå¥šã«ãªããŸããã代ããã«ç¬èªã®promiseã©ã€ãã©ãªããã©ã°ã€ã³ããŠãã ããïŒhttpïŒ //mongoosejs.com/docs/promises.html
@pronebirdã¯æ®å¿µãªããããããexec()
ãå
éšã§æ©èœããæ¹æ³ã§ããã exec()
ãžã®ã³ãŒã«ããã¯ã¯å®éã«ã¯çŽæãééããŸãã mongoose.Promise = global.Promise
ãå®è¡ããã ãã§ããã®èŠåã¯è¡šç€ºãããªããªããŸãã
@pronebirdæçš¿æã«åããšã©ãŒãçºçããŸããããã¹ããŒãã«ä»¥äžã«ç€ºãããã©ã«ãå€ãããã以äžã®æçš¿å€ãšäžèŽããªãããšãããããŸããã
圹å²ïŒ {
ã¿ã€ãïŒæååã
åæåïŒ['ã¯ã©ã€ã¢ã³ã'ã '管çè
']ã
ããã©ã«ãïŒ 'ã¯ã©ã€ã¢ã³ã'
}
ç§ã¯roleïŒadminãæçš¿ããããã¯Adminã§ããå¿
èŠããããŸã
ãã®çãã誰ããå©ããããšãé¡ã£ãŠããŸãã ããããšã
@Muhammedalbayatiããªãã®åé¡ã¯ãã®ç¹å®ã®åé¡ãšã¯äœã®é¢ä¿ããªããšæããŸããïŒ ããã¯ãçŽæã«é¢ããŠãã³ã°ãŒã¹ãçºè¡ããèŠåã«ãããŸããã
@varunjayaramanããªãã¯æ£ããã§ããç§ã¯æ¬¡ã®ããšãèšåããå¿
èŠããããŸã
èŠå
DeprecationWarningïŒMongooseïŒmpromiseïŒmongooseã®ããã©ã«ãã®promiseã©ã€ãã©ãªïŒã¯éæšå¥šã§ãã代ããã«ç¬èªã®promiseã©ã€ãã©ãªããã©ã°ã€ã³ããŠãã ããïŒhttpïŒ //mongoosejs.com/docs/promises.html
mongoose.Promise = global.Promise;ãè¿œå ããããšã§ãªããªããŸãã ããŒã¿ããŒã¹ã«æ¥ç¶ããåã«
mongoose.connectïŒ 'mongodbïŒ// localhostïŒ27017 / mydb'ïŒ;
@Muhammedalbayati @ vkarpov15ããã®èŠåã衚瀺ãããçç±ã説æãããšæããŸãã Mongooseã¯ã 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-promiselibãè¿œå ããŸãã
ã ããæããªåé¡ïŒ
PSïŒãã®ã¯ãœèŠåãããªãã®å¥³ã«æŒãä»ããŠãã ããïŒ
ãã·ã¢èªã話ã仲éãšããŠããã®å°æãªååšãããã«æžãããã®ã翻蚳ããªãããã«ãšããè¡åã瀺ããããšããè©«ã³ããŸãã
@ 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ã¹ããŒããã¡ã€ã«ã«mongooseãã€ã³ããŒãããŠãããäžéšã®ãã¹ãã§ãã®Userã¹ããŒãã䜿çšããŠããŸãã
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
promiseãåå®çŸ©ãããŠããªããã³ã°ãŒã¹ã€ã³ã¹ã¿ã³ã¹ããã¢ãã«ãäœæããå Žåããã®ã¢ãã«ã«å¯Ÿãããã¹ãŠã®ã¯ãšãªã§èŠåãã¹ããŒãããŸãã
@Spown
ç§ã¯ãã®ã¹ã¬ããã«é©åãªã¿ã€ãã³ã°ã§ééããŸããã æ å ±ãä¿åããŠãããšãã¯ãã€ã§ãåãèŠåã衚瀺ãããŠããŸããã ç§ã¯ãã³ã°ãŒã¹ã®ã€ã³ã¹ã¿ã³ã¹ããã¢ãã«ãäœæããŠããŠããããåå®çŸ©ããŠããªãã£ãããšãããããŸããã bluebirdãèŠæ±ããmongooseã«èšå®ããŸããPromiseã¯ãšã©ãŒã¡ãã»ãŒãžã解決ããŸããã
æ¬åœã«ããããšãïŒ
@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)
ç§ã¯çŽæãèšå®ããŸããïŒ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 Promisesã䜿çšããªãã®ã¯ãªãã§ããïŒ ãããã¯ä»ã©ãã§ãå©çšå¯èœã§ã¯ãããŸãããïŒ
mongoose.Promise = Promise; // eh?
@Spownã«æè¬ããŸããã¢ãã«ã®ã€ã³ããŒãåŸã«mongoose.Promise = global.Promise
ãå
¥ããã®ã§ãåãéæšå¥šã®èŠåã«çŽé¢ããŸããã ããã§ãéæšå¥šã®èŠåã¯ãªããªããŸããã
@Spownã§èšåãããŠããããã«ãã¢ãã«ãã¡ã€ã«ã§mongoose.Promise = global.Promise
ã宣èšãããšæ©èœããŸãã ããã¯ãããŒããå¿
èŠãªã¢ãžã¥ãŒã«ããã£ãã·ã¥ããŠããããã§ãã ããããããã¯æ°ãŸãããªããã§ãã ãã®ãã¡ã€ã«ã§mongooseã®promiseé¢æ°ãèšå®ã§ããããã«ã test_helpers.jsãæåã«ããŒããããŠããããšã確èªããæ¹æ³ã¯ãããŸãããïŒ
ãããä¿èšŒããæ¹æ³ã¯ãããŸããã...
å人çã«ã¯ããããžã§ã¯ãã§1åã ãrequire
ãã³ã°ãŒã¹ãäœæãããããã°ããŒãã«ã·ã³ã°ã«ãã³ãªããžã§ã¯ãã«å
¥ããŠããã¹ãŠã®DBç®çã§ã©ãã§ã䜿çšããŸãã æ£ç¢ºã«ã¯åªé
ã§ã¯ãããŸããããã»ãšãã©ã®å Žåé²åŒŸã§ãã ãããŠãç§ãè¡ãã«ã¹ã¿ã æ¥ç¶ïŒ mongoose.connect()
$ã§ã¯ãªãmongoose.createConnection()
ãä»ããŠè¡ãããæ¥ç¶ïŒã䜿çšããå Žåãã¢ãã«ãäœæããå¿
èŠããããšããçç±ã ãã§ãéæšå¥šã«ãªããã£ãšåãããããè¡ã£ãŠããŸããããã®æ¥ç¶ã«ãªã³ã¯ãããŠãããã³ã°ãŒã¹ã€ã³ã¹ã¿ã³ã¹ããã ããããªããšããŸã£ããæ©èœããªããªããåä»ãªèŠåãããã¯ããã«æªããªããŸãã
ãããç§ã¯@SpownãšåãããšãããŸãã ããã¯ç¢ºãã«çæ³çã§ã¯ãããŸããããmpromiseãå®å šã«å»æ¢ã§ãã次ã®ã¡ãžã£ãŒãªãªãŒã¹ãŸã§ããã³ã°ãŒã¹ã®äžäœäºææ§ãç¶æããå¯äžã®æ¹æ³ã§ãã
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);
models / user.js
import {mongoose, Schema} from '../libs/mongoose';
export default mongoose.model('User', new Schema({
name: String,
password: String,
}));
@howard requireïŒïŒåŒã³åºãã¯ãã£ãã·ã¥ãããŸãã
ãããã£ãŠãæ£ããç解ããŠããå Žåã¯ã1ã€ã®å ŽæïŒããšãã°ãã€ã³ããã¯ã¹ãã¡ã€ã«ãæ¥ç¶ãèšå®ããŠããå ŽæïŒã§ã®ã¿è¡ãã®ã§ã¯ãªãããã¹ãŠã®ã¹ããŒã宣èšã®åã«promiseãèšå®ããå¿
èŠããããŸãã
ããã¯è¯ãç¿æ
£ã§ã¯ãããŸããã次ã®ãããªé¢æ°ã«å€æŽããããšãæ€èšãã䟡å€ããããŸãã
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ããªãªãŒã¹ããäºå®ã§ãããã€ãã¿ãŒã§ãã³ã°ãŒã¹ããã©ããŒããããSlackãã£ã³ãã«ã«åå ããŠææ°æ å ±ãå ¥æããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯ãã®èŠåã解決ããŸãã
mongoose.connectãåŒã³åºãçŽå