Mongoose: DeprecationWarning: collection.ensureIndex๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  createIndexes๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์— ๋งŒ๋“  2018๋…„ 08์›” 18์ผ  ยท  32์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Automattic/mongoose

5.2.9 ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ์›น ์•ฑ์„ ์‹œ์ž‘ํ•  ๋•Œ ํ•ญ์ƒ ์ฝ˜์†”์— ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฒ„์ „ 5.2.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„. ์•„๋ž˜ ์˜ต์…˜ ์ค‘ ๊ฒฝ๊ณ ๋ฅผ ์ค‘์ง€ํ•ด์•ผ ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

js mongoose.connect(config.dbUri, { useCreateIndex: true, useNewUrlParser: true })
๋˜๋Š”
js mongoose.set('useCreateIndex', true) mongoose.connect(config.dbUri, { useNewUrlParser: true })
์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (์ œ๊ฐ€ ์ž˜๋ชปํ•œ๊ฑฐ๋ผ๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค)

๋ชจ๋“  32 ๋Œ“๊ธ€

#6880์˜ ์ค‘๋ณต

@bricss ๋ฌธ์ œ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชฝ๊ตฌ์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ensureIndex() ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ฒฝ๊ณ ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ๋…ธ๋“œ ํ”Œ๋ž˜๊ทธ --no-deprecation ๋กœ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์˜์กดํ•˜๊ณ  ์žˆ๋˜ 5.2.9์— ํŠน์ • ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†๋Š” ๊ฒฝ์šฐ 5.2.8๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด #6880 ํŒ”๋กœ์šฐ ๐Ÿ‘

,unique: true,index: true๋Š” ๋‚ด ์Šคํ‚ค๋งˆ ์ค‘ ํ•˜๋‚˜์˜ ํ•„๋“œ์— ์žˆ์œผ๋ฉฐ ์ด ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์ง€ ์•Š๊ณ  ๊ณ ์œ ํ•œ ๊ฐ’์„ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค.

@nonniv ๋ฅผ 5.2.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  mongoose.set('useCreateIndex', true); ์„ค์ •

๋ฒ„์ „ 5.2.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„. ์•„๋ž˜ ์˜ต์…˜ ์ค‘ ๊ฒฝ๊ณ ๋ฅผ ์ค‘์ง€ํ•ด์•ผ ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

js mongoose.connect(config.dbUri, { useCreateIndex: true, useNewUrlParser: true })
๋˜๋Š”
js mongoose.set('useCreateIndex', true) mongoose.connect(config.dbUri, { useNewUrlParser: true })
์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (์ œ๊ฐ€ ์ž˜๋ชปํ•œ๊ฑฐ๋ผ๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค)

@samuelcecilio ์–ด๋–ค ํŠน์ • ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๋‚˜์š”? #6922๋ฅผ ์—ฌ๋Š” ๋Œ“๊ธ€์— ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋ฉ”๋ชจ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์—ฌ๊ธฐ์— ํŠน์ • ๊ฒฝ๊ณ ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”. ์ œ๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

(node:9125) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

@samuelcecilio mongoose.set('useCreateIndex', true) ๋Š” ๋‹ค์Œ ์˜ˆ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฒฝ๊ณ ๋ฅผ ์ค‘์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

6922.js

#!/usr/bin/env node
'use strict';

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
mongoose.set('useCreateIndex', true);

const conn = mongoose.connection;
const Schema = mongoose.Schema;

const schema = new Schema({
  name: {
    type: String,
    unique: true
  }
});

const Test = mongoose.model('test', schema);

const test = new Test({ name: 'one' });

async function run() {
  console.log(`mongoose version: ${mongoose.version}`);
  await conn.dropDatabase();
  await test.save();
  return conn.close();
}

run();

์‚ฐ์ถœ:

issues: ./6922.js
mongoose version: 5.2.10
issues:

๋‹น์‹ ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ 5.2.10์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๋ชฝ๊ตฌ์Šค ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”, ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๋ฒ„์ „์„ ์„ธ ๋ฒˆ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

$ npm list --depth=0 ... [email protected] ...

๋‚ด ์ฝ”๋“œ

์•ฑ.js
````js
...

const ๊ตฌ์„ฑ = ํ•„์š”('./config')
const ๋ชฝ๊ตฌ์Šค = ์š”๊ตฌ('๋ชฝ๊ตฌ์Šค')
const ํ‘œํ˜„ = ์š”๊ตฌ('ํ‘œํ˜„')
const ์•ฑ = ์ต์Šคํ”„๋ ˆ์Šค()

mongoose.connect(config.dbUri, { useNewUrlParser: true })
mongoose.set('useCreateIndex', ์ฐธ)

....

module.exports = ์•ฑ
````

๋นˆ/www
````js

!/usr/bin/env ๋…ธ๋“œ

const ์•ฑ = ํ•„์ˆ˜('../์•ฑ')
const ๊ตฌ์„ฑ = ํ•„์š”('../config')
const ๋””๋ฒ„๊ทธ = ์š”๊ตฌ('๋””๋ฒ„๊ทธ')('์ „๊ฒฉ ๊ณต๊ฒฉ')
const http = ์š”๊ตฌ('http')
const ํฌํŠธ = normalizePort(process.env.PORT || config.port)
const ๋ชฝ๊ตฌ์Šค = ์š”๊ตฌ('๋ชฝ๊ตฌ์Šค')

app.set('ํฌํŠธ', ํฌํŠธ)

const ์„œ๋ฒ„ = http.createServer(์•ฑ)

server.listen(ํฌํŠธ)
server.on('์˜ค๋ฅ˜', onError)
server.on('๋“ฃ๊ธฐ', onListening)

const mongo = mongoose.connection

mongo.on('์˜ค๋ฅ˜', ์˜ค๋ฅ˜ => { ๋””๋ฒ„๊ทธ('๋ชฝ๊ณ : ' + error.name) })
mongo.on('์—ฐ๊ฒฐ๋จ', () => { ๋””๋ฒ„๊ทธ('mongo: ์—ฐ๊ฒฐ๋จ') })
mongo.on('์—ฐ๊ฒฐ ๋Š๊น€', () => { ๋””๋ฒ„๊ทธ('mongo: ์—ฐ๊ฒฐ ๋Š๊น€') })

....
````

DEBUG=blitz* npm run dev ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ

````๋ฐฐ์‹œ

๋…ธ๋“œ๋ชฌ bin/www

[๋…ธ๋“œ๋ชฌ] 1.18.3
[nodemon] ์–ธ์ œ๋“ ์ง€ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด rs ๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.
[๋…ธ๋“œ๋ชฌ] ๋ณด๊ณ  ์žˆ๋‹ค: .
[๋…ธ๋“œ๋ชฌ] ์‹œ์ž‘ node bin/www
blitz ํฌํŠธ 3000์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘ +0ms
๋ธ”๋ฆฌ์ธ  ๋ชฝ๊ณ : ์—ฐ๊ฒฐ๋จ +14ms
(node:10622) DeprecationWarning: collection.ensureIndex๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  createIndexes๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
````

@samuelcecilio ๋Œ€์‹  mongoose.set('useCreateIndex', true) ๋ฅผ bin/www ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ต์Šคํ”„๋ ˆ์Šค ์˜ˆ์ œ๋„ ์„ค์ •ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@samuelcecilio ์ด๊ฒƒ์œผ๋กœ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€๋‹ค๊ฐ€ ๋ชจ๋ธ์ด ํฌํ•จ๋œ ๊ฒฝ๋กœ ํŒŒ์ผ์—์„œ useCreateIndex๋ฅผ true๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์ต์Šคํ”„๋ ˆ์Šค cli ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ํ›„ ์•„๋ž˜ ํ‘œ์‹œ๋œ ์ธ๋ฑ์Šค ๊ฒฝ๋กœ์—์„œ useCreateIndex๋ฅผ ์„ค์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

var express = require('express');
var router = express.Router();
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true);
const Test = mongoose.model('test', { name: {type: String, unique: true }});

/* GET home page. */
router.get('/', function(req, res, next) {
  Test.create({ name: 'billy' }).then((doc) => {
    return res.status(200).json({ done: true, test: doc.id });
  }).catch((e) => {
    return res.status(500).json({ err: e });
  });
});

module.exports = router;

๋‚ด๊ฐ€ ์–ป์€ ์ธ๋ฑ์Šค ๊ฒฝ๋กœ์— ์˜ต์…˜์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ :

[nodemon] starting `node bin/www`
version: 5.2.10
(node:17042) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

๋‚ด๊ฐ€ ์–ป์€ ๊ฒฝ๋กœ์—์„œ ์˜ต์…˜์„ ์„ค์ • ํ•œ ํ›„ :

[nodemon] starting `node bin/www`
version: 5.2.10
^C

bin/www์—์„œ ์„ค์ •์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฒฝ๊ณ ๊ฐ€ ์ œ๊ฑฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์— ์„ค์ •ํ•ด์•ผ๋งŒ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

์ปฌ๋ง ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ ์ถœ๋ ฅ

~>: curl localhost:3000/
{"done":true,"test":"5b84a4e13ec72e4352475426"}~>: 
~>: 

๋‚˜๋Š” ์‚ฌ์šฉ์ž, ๊ณ ๊ฐ, ๊ณต๊ธ‰์ž, ์ฃผ๋ฌธ, ํ’ˆ๋ชฉ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ๊ฒฝ๊ณ ๊ฐ€ ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ/์‚ฌ์šฉ์ž.js
````js
const addressSchema = ํ•„์š”('./์ฃผ์†Œ')
const profileSchema = ์š”๊ตฌ('./ํ”„๋กœํ•„')
const uuidv4 = ์š”๊ตฌ('uuid/v4')
const ๋ชฝ๊ตฌ์Šค = ์š”๊ตฌ('๋ชฝ๊ตฌ์Šค')
const ์Šคํ‚ค๋งˆ = mongoose.Schema

mongoose.set('useCreateIndex', ์ฐธ)

const userSchema = ์ƒˆ ์Šคํ‚ค๋งˆ({
๋น„ํ™œ์„ฑํ™”๋จ: { ์œ ํ˜•: ๋ถ€์šธ, ๊ธฐ๋ณธ๊ฐ’: false },
์—ญํ• : { ์œ ํ˜•: ๋ฐฐ์—ด, ๊ธฐ๋ณธ๊ฐ’: [ '์–ด์‹œ์Šคํ„ดํŠธ' ] },
ID: { ์œ ํ˜•: ๋ฌธ์ž์—ด, ๊ณ ์œ : true, ํ•„์ˆ˜: true },
์‚ฌ์šฉ์ž ์ด๋ฆ„: { ์œ ํ˜•: ๋ฌธ์ž์—ด, ๊ณ ์œ : true, ํ•„์ˆ˜: true },
์ด๋ฆ„: { ์œ ํ˜•: ๋ฌธ์ž์—ด, ๋Œ€๋ฌธ์ž: true, ํ•„์ˆ˜: true },
๋น„๋ฐ€๋ฒˆํ˜ธ: { ์œ ํ˜•: ๋ฌธ์ž์—ด, ํ•„์ˆ˜: true },
๋น„๋ฐ€: ๋ฌธ์ž์—ด,
ํ”„๋กœํ•„: ํ”„๋กœํ•„ ์Šคํ‚ค๋งˆ,
์ฃผ์†Œ: addressSchema,
๋งŒ๋“  ๋‚ ์งœ: ๋‚ ์งœ,
์ˆ˜์ •: ๋‚ ์งœ
}, {
์ปฌ๋ ‰์…˜: '์‚ฌ์šฉ์ž'
})

userSchema.pre('์ €์žฅ', ํ•จ์ˆ˜(๋‹ค์Œ) {
const ๋ฌธ์„œ = ์ด๊ฒƒ
doc.created = Date.now()
doc.modified = Date.now()
doc.secret = uuidv4()
๋‹ค์Œ()
})

module.exports = mongoose.model('์‚ฌ์šฉ์ž', userSchema)

````

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ผ๋ถ€ ์ „์—ญ ์„ค์ •์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ ๋ชจ๋“  ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

@samuelcecilio ๋‹น์‹ ์€ ๋ชฝ๊ตฌ์Šค๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ ํŒŒ์ผ๋กœ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

myMongoose.js

const mongoose = require('mongoose')
mongoose.set('useCreateIndex', true);
//etc
module.exports = mongoose

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋“  ๊ณณ์—์„œ ๋ชฝ๊ตฌ์Šค ๋Œ€์‹  const mongoose = require('myMongoose') ๋ž˜ํผ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„ ๋‚ด๊ฐ€ 5.2.8 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ํ•ด์•ผ ํ•  ์ผ๊ณผ ๋น„์Šทํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋ชจ๋“  ํ˜„์žฌ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. models ํด๋”์˜ ๊ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด $ require ('mongoose') ๋ฅผ require('myMongoose') ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. app.js ๋ฐ bin/www ์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. mongoose mongoose.set ('useCreateIndex', true) ๋ฅผ ํฌํ•จํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ด์ „ ๋ฒ„์ „์˜ mongo, ๋…ธ๋“œ ๋“ฑ๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ •์ƒ์ด ๋ ๊นŒ์š”?

๋‚˜๋Š” ๋™์ž‘์ด ๋ชฝ๊ตฌ์Šค์˜ ๋‹ค์Œ ์ฃผ์š” ๋ฒ„์ „(์ฆ‰, 6.0.0 )๊นŒ์ง€ ์ง€๊ธˆ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค( ๋ณ€์ˆ˜๋ฅผ ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ ์„ค์ •ํ•ด์•ผ ํ•จ).

์ง€๊ธˆ์€ require('mongoose') ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ์— mongoose.set('useCreateIndex', true) ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ('./myMongoose') ๋˜๋Š” ('./mongoose-custom') ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

์ด๊ฒƒ์ด ๊ธ€๋กœ๋ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ํŠน๊ธ‰๋ฌธ์ œ์ธ๊ฐ€์š”?

๋ชจ๋ธ ์„ ์–ธ์ด ํฌํ•จ๋œ ๋ชจ๋“  ๋‹จ์ผ ํŒŒ์ผ์— mongoose.set('useCreateIndex', true) ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.
connect ์˜ต์…˜์—์„œ๋„ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐํ•˜๊ธฐ ์ „์— ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@samuelcecilio @bricss ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ž ์žฌ์ ์ธ ์†”๋ฃจ์…˜์„ ์กฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ชจ๋“  ํŒŒ์ผ์— ๋„ฃ์„ ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์ง€๊ธˆ ๋‹น์žฅ์€ mongoose.model() ํ˜ธ์ถœ ์ „์— mongoose.set('useCreateIndex', true)๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ์™€ ๋ฐ˜๋Œ€๋กœ ๋ชจ๋ธ์„ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 5.2.13์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ๊ฒฝ๊ณ ๋ฅผ ์ค‘์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”

javascript mongoose.connect(config.dbUri, { useCreateIndex: true, useNewUrlParser: true })

bash the options [useCreateIndex] is not supported server: listening on port 3000 +0ms mongo: Connected +34ms (node:18457) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

@samuelcecilio useCreateIndex ๋Š” ์—ฐ๊ฒฐ ์˜ต์…˜์ด ์•„๋‹ˆ์ง€๋งŒ mongoose.model() #$๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— mongoose.set('useCreateIndex', true); ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ•œ(๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ๋„) mongoose.model์— ๋Œ€ํ•œ ๋ชจ๋“  ํ›„์† ํ˜ธ์ถœ์€ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. mongoose.set() ๋กœ ์„ค์ •ํ•œ ์˜ต์…˜์œผ๋กœ ์œ„์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 5.2.13์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‚ด ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹Œ bin/www ํŒŒ์ผ์—์„œ mongoose.set('useCreateIndex', true) ๋ฅผ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

5.2.13์—์„œ ์—ฐ๊ฒฐ ํ›„ ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ํŒŒ์ผ ์ „์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด db.js ํŒŒ์ผ์˜ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.

// Create the database connection
mongoose.connect(encodeMongoURI(dbURI), options);
mongoose.set('useCreateIndex', true);

๋ณ„๋„์˜ ์Šคํฌ๋ฆฝํŠธ์— mongo ์—ฐ๊ฒฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ mongoose.set('useCreateIndex', true); ์‹ค์ œ๋กœ mongo์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์ง์ „์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚ด ๋ชจ๋ธ ์„ ์–ธ์— ๋„ฃ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@LucHighwalker ์˜ ์ œ์•ˆ์€ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” mongoose.connect() ํ˜ธ์ถœ ์ง์ „์— ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ „์—ญ ์˜ต์…˜ ์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์  ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”?

mongoose.connect(encodeMongoURI(dbURI), options);
mongoose.set('useCreateIndex', true);

๊ทธ๋ฆฌ๊ณ 

mongoose.set('useCreateIndex', true);
mongoose.connect(encodeMongoURI(dbURI), options);

? ๋‘˜ ๋‹ค 5.2.17์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์—

mongoose.connect(config.dbUri, { useCreateIndex: true, useNewUrlParser: true })

์ตœ์‹  ๋ฒ„์ „์—์„œ ์ž‘๋™

์ข‹์•„, ๋‚˜๋Š” @types/mongoose๊ฐ€ ๊ทธ ๋’ค์˜ ์ผ๋ถ€ ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์•„์ง typescript์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

mongoose.connect(url, { useNewUrlParser: true, autoIndex: false })

@Dionesio ์˜ ๋Œ€๋‹ต์€ ๋‚˜์—๊ฒŒ ์†์ž„์ˆ˜๋ฅผ ์ผ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

mongoose.connect("mongodb://localhost:27017/test", {useNewUrlParser: true});
mongoose.set('useCreateIndex', ์ฐธ);

์ด๊ฒƒ์€ ๋‚ด ๋ชจ๋“  ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@samuelcecilio ์ด๊ฒƒ์œผ๋กœ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€๋‹ค๊ฐ€ ๋ชจ๋ธ์ด ํฌํ•จ๋œ ๊ฒฝ๋กœ ํŒŒ์ผ์—์„œ useCreateIndex๋ฅผ true๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์ต์Šคํ”„๋ ˆ์Šค cli ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ํ›„ ์•„๋ž˜ ํ‘œ์‹œ๋œ ์ธ๋ฑ์Šค ๊ฒฝ๋กœ์—์„œ useCreateIndex๋ฅผ ์„ค์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

var express = require('express');
var router = express.Router();
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true);
const Test = mongoose.model('test', { name: {type: String, unique: true }});

/* GET home page. */
router.get('/', function(req, res, next) {
  Test.create({ name: 'billy' }).then((doc) => {
    return res.status(200).json({ done: true, test: doc.id });
  }).catch((e) => {
    return res.status(500).json({ err: e });
  });
});

module.exports = router;

๋‚ด๊ฐ€ ์–ป์€ ์ธ๋ฑ์Šค ๊ฒฝ๋กœ์— ์˜ต์…˜์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ :

[nodemon] starting `node bin/www`
version: 5.2.10
(node:17042) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

๋‚ด๊ฐ€ ์–ป์€ ๊ฒฝ๋กœ์—์„œ ์˜ต์…˜์„ ์„ค์ • ํ•œ ํ›„ :

[nodemon] starting `node bin/www`
version: 5.2.10
^C

bin/www์—์„œ ์„ค์ •์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฒฝ๊ณ ๊ฐ€ ์ œ๊ฑฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์— ์„ค์ •ํ•ด์•ผ๋งŒ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

์ปฌ๋ง ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์˜ ์ถœ๋ ฅ

~>: curl localhost:3000/
{"done":true,"test":"5b84a4e13ec72e4352475426"}~>: 
~>: 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค - ์ถ”๊ฐ€ mongoose.set('useCreateIndex', true); ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ฐธ์กฐ ํ•˜๋ ค๋ฉด ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰