복붙노트

[MONGODB] 어떻게 useMongoClient (몽구스 4.11.0)를 설정하는 방법?

MONGODB

어떻게 useMongoClient (몽구스 4.11.0)를 설정하는 방법?

이것은 내가 내 데이터베이스에 연결하는 데 사용하는 코드입니다 :

private connectDatabase(databaseUri: string): Promise<Mongoose.Connection> {
    return Mongoose.connect(databaseUri).then(() => {
        debug('Connected to MongoDB at %O', databaseUri);
        return Mongoose.connection;
    });
}

오늘 나는 버전 4.11.0에 몽구스를 업데이트하고 내 테스트를 실행할 때이 경고를 가지고 :

(node:4138) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0,
use `openUri()` instead, or set the `useMongoClient` option if using `connect()`
or `createConnection()`

나는 어떻게 "설정 useMongoClient"에에 대한 정보를 찾을 수 없습니다.

너희들은 어떻게하는 지 알고 있나요?

해결법

  1. ==============================

    1.이것은 당신이 useMongoClient을 사용하는 방법입니다 : mongoose.connect ( 'MongoDB를 : // localhost를 / advisorDemoTestDB', {useMongoClient : TRUE})

    이것은 당신이 useMongoClient을 사용하는 방법입니다 : mongoose.connect ( 'MongoDB를 : // localhost를 / advisorDemoTestDB', {useMongoClient : TRUE})

  2. ==============================

    2.{useMongoClient : TRUE} 추가 다른 연결 인수 또는 createConnection 방법으로 그 사용중인 몽구스의 버전에 따라 다릅니다.

    {useMongoClient : TRUE} 추가 다른 연결 인수 또는 createConnection 방법으로 그 사용중인 몽구스의 버전에 따라 다릅니다.

    // Using `mongoose.connect`...
    var promise = mongoose.connect('mongodb://localhost/myapp', {
      useMongoClient: true,
      /* other options */
    });
    // Or `createConnection`
    var promise = mongoose.createConnection('mongodb://localhost/myapp', {
      useMongoClient: true,
      /* other options */
    });
    
  3. ==============================

    3.

    mongoose.connection.openUri('mongodb://127.0.0.1/camp_v12')
    

    사람이 시도하고있다? 내가 이것을 사용하면 내되지 않는 경고가 사라졌다,이 문서에서했다

    http://mongoosejs.com/docs/connections.html

  4. ==============================

    4.이를위한 가장 쉬운 수정, 터미널을 열고 루트 프로젝트로 디렉토리를 변경하는 것 (package.json은 폴더)

    이를위한 가장 쉬운 수정, 터미널을 열고 루트 프로젝트로 디렉토리를 변경하는 것 (package.json은 폴더)

    운영: NPM 제거 몽구스

    그때:

    NPM 설치 mongoose@4.10.8 --save

    문제 해결됨.

    업그레이드는 항상 최고의 옵션이 아닙니다.

    http://mongoosejs.com/docs/connections.html

  5. ==============================

    5.타이프 라이터없이 당신은 꽤 많은 문제를 무시하고 Mongoose.connect (databaseUri, {useMongoClient : 사실을})를 사용할 수 있습니다.

    타이프 라이터없이 당신은 꽤 많은 문제를 무시하고 Mongoose.connect (databaseUri, {useMongoClient : 사실을})를 사용할 수 있습니다.

    당신이 정말로 필요가 없도록하려는 경우 경고가 버전 4.11.0을 피하십시오.

    나는 버전 4.11.1으로 업데이트 및 유형 / 몽구스 @ @ 4.7.18는 아직 업데이트되지 않은 그들이 ConnectionOptions에서 필드 useMongoClient을 언급하지 않기 때문에, 이것은 내가 모듈을 수입하는 방법입니다 :

    const Mongoose = require('mongoose');
    

    그리고이 기능을 사용 :

    private connectDatabase(databaseUri: string): Promise<any> {
        return Mongoose.connect(databaseUri, { useMongoClient: true })
            .then(() => {
                console.log('Connected to MongoDB at ', databaseUri);
                return Mongoose.connection;
            })
            .catch(err => debug(`Database connection error: ${err.message}`));
    }
    
  6. ==============================

    6.많은 답변이 말하는 것처럼, {useMongoClient : 사실}를 추가하는 옵션 인수하는 연결 또는 createConnection 방법은 문제를 해결합니다.

    많은 답변이 말하는 것처럼, {useMongoClient : 사실}를 추가하는 옵션 인수하는 연결 또는 createConnection 방법은 문제를 해결합니다.

    의 경우 예를 들어,

    // With mongoose.connect method
    mongoose.connect('mongodb://localhost/app', { useMongoClient: true });
    
    // With createConnection method
    mongoose.createConnection('mongodb://localhost/app', { useMongoClient: true });
    

    그러나 MongoClient는 처음부터 무엇인가?

    MongoDB를 Node.js를 드라이버 버전 1.2에서 새 연결 클래스 MongoClient는 공식 드라이버 모두에서 동일한 이름이 소개되었다.

    새 연결 클래스 MongoClient는 승인이 꺼져있는 기존 DB 연결 클래스는 대조적으로, MongoDB의 모든 기록을 인정합니다.

    그래서 {useMongoClient : 사실은} 예전보다는 새 연결 클래스를 사용하는 moongoose 알려줍니다

    추가 정보를 원하시면 여기를 클릭하십시오

  7. ==============================

    7.몽구스의 4.11.x와 MongoDB를에 연결 (MLAB 단일 인스턴스 및 MongoDB를 아틀라스 복제 세트를 모두 테스트) :

    몽구스의 4.11.x와 MongoDB를에 연결 (MLAB 단일 인스턴스 및 MongoDB를 아틀라스 복제 세트를 모두 테스트) :

    const mongoose = require('mongoose');
    
    mongoose.Promise = global.Promise;
    
    const options = {
      promiseLibrary: global.Promise,
      useMongoClient: true,
    };
    
    function connect() {
      mongoose.connect(URI, options)
        .then(function() {
          const admin = new mongoose.mongo.Admin(mongoose.connection.db);
          admin.buildInfo(function(err, info) {
            if (err) {
              console.err(`Error getting MongoDB info: ${err}`);
            } else {
              console.log(`Connection to MongoDB (version ${info.version}) opened successfully!`);
            }
          });
        })
        .catch((err) => console.error(`Error connecting to MongoDB: ${err}`));
    }
    
    module.exports = connect;
    

    모델을 만들기 :

    const mongoose = require('mongoose');
    
    const userSchema = new mongoose.Schema({...});
    
    module.exports = mongoose.model('User', userSchema);
    
  8. ==============================

    8.몽구스 문서에 따르면,이 useMongoClient을 설정하는 방법입니다.

    몽구스 문서에 따르면,이 useMongoClient을 설정하는 방법입니다.

    function connectDatabase(databaseUri){
        var promise = mongoose.connect('mongodb://localhost/myapp', {
            useMongoClient: true,
        });
        return promise;
    }
    
  9. ==============================

    9.

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/starbucks', { 
        useMongoClient: true 
    });
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('openUri', function() {
        // we're connected!
    });
    
  10. ==============================

    10.오류:

    오류:

    (노드 : 1,652) DeprecationWarning : 오픈 ()는 () 대신, 몽구스> 4.11.0 = openUri에서 사용을 중단하거나, 연결 () 또는 createConnection ()를 사용하면 useMongoClient 옵션을 설정한다.

    연결 속성에 true를 설정 useMongoClient 사람 : 솔루션

    var promise = mongoose.connect('mongodb://localhost/myapp', {
      useMongoClient: true,
      /* other options */
    });
    

    http://mongoosejs.com/docs/connections.html#use-mongo-client 참조 지금 요청을 듣고

  11. ==============================

    11.이를위한 가장 쉬운 수정 :

    이를위한 가장 쉬운 수정 :

    단자를 통해 프로젝트의 루트 폴더에서이 명령을 실행합니다 :

    NPM 제거 몽구스

    NPM 설치 mongoose@4.10.8 --save

    문제 해결됨.

    업그레이드는 항상 최고의 옵션이 아닙니다.

    https://github.com/Automattic/mongoose/issues/5399

  12. ==============================

    12.그것은 나를 타이프 ​​라이터를 사용하여 작동합니다 :

    그것은 나를 타이프 ​​라이터를 사용하여 작동합니다 :

    var dbOpt : any = { 
        useMongoClient: true
    } 
    mongoose.connect(dbURI, dbOpt);
    
  13. from https://stackoverflow.com/questions/44749700/how-to-set-usemongoclient-mongoose-4-11-0 by cc-by-sa and MIT license