bestsource

사용 MongoClient(Mongoose 4.11.0)를 설정하는 방법은 무엇입니까?

bestsource 2023. 5. 29. 11:03
반응형

사용 MongoClient(Mongoose 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;
    });
}

오늘 Mongoose를 버전 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()`

"MongoClient를 사용하도록 설정하는 방법"에 대한 정보를 찾을 수 없습니다.

당신들은 어떻게 하는지?

MongoClient를 사용하는 방법은 다음과 같습니다.

mongoose.connect('mongodb://localhost/advisorDemoTestDB', { useMongoClient: true })

연결 또는 생성하기 위한 또 다른 인수로 {useMongoClient:true}을(를) 추가합니다. 이 인수는 사용 중인 mongoose 버전에 따라 다릅니다.

// 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 */
});
mongoose.connection.openUri('mongodb://127.0.0.1/camp_v12')

누가 이것을 시도해 본 적이 있습니까? 제가 이것을 사용할 때 제가 사용하지 않은 경고가 사라졌습니다. 문서에서 나온 경고입니다.

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

이것에 대한 가장 쉬운 해결책은 터미널을 열고, 당신의 디렉토리를 루트 프로젝트로 바꾸는 것입니다.package.jsonis)

실행:
npm remove mongoose

그러면:

npm install mongoose@4.10.8 --save

문제는 해결됐습니다.

업그레이드가 항상 최선의 옵션은 아닙니다.

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

유형 스크립트가 없으면 문제를 거의 무시하고 사용할 수 있습니다.Mongoose.connect(databaseUri, { useMongoClient: true }).

경고가 표시되지 않도록 하려면 버전 4.11.0을 사용하지 마십시오.

버전 4.11.1로 업데이트했는데 아직 @types/mongoose@4.7.18이 업데이트되지 않았고 필드에 대한 언급이 없습니다.useMongoClient에서ConnectionOptions모듈을 가져온 방법은 다음과 같습니다.

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}`));
}

많은 답변에서 알 수 있듯이, 추가{ useMongoClient: true }에 대한 옵션 주장으로connect또는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 Driver 버전 1.2부터 모든 공식 드라이버에서 이름이 동일한 새로운 연결 클래스 MongoClient가 도입되었습니다.

새 연결 클래스 MongoClient는 확인 응답이 해제된 기존 DB 연결 클래스와 달리 MongoDB에 대한 모든 쓰기를 확인합니다.

그렇게{ useMongoClient: true }moongoose에게 이전 연결 클래스가 아닌 새 연결 클래스를 사용하도록 말합니다.

자세한 내용은 여기를 클릭하십시오.

Mongoose 4.11.x를 사용하여 MongoDB에 연결합니다(mLab 단일 인스턴스 및 MongoDB Atlas 복제본 세트 모두에서 테스트됨).

conmongoose = required "mongoose";

몽구스약속 = 글로벌.약속;
구성 옵션 = {promise 라이브러리: 글로벌.약속.MongoClient 사용: true,};
함수 연결 () {}mongoose.connect(URI, 옵션).then(함수는 {})const admin = new mongoose.mongo.관리자(mongoose.connection.db);
관리의buildInfo(함수(err, 정보) {만약(오류) {console.err('MongoDB 정보 가져오기 오류: ${err}');
그렇지 않으면 {console.log('MongoDB(버전 ${info.version})에 대한 연결이 성공적으로 열렸습니다!`);}});}).vmx((err) => console.error('MongoDB에 연결하는 중 오류 발생: ${err}');}
모듈. 모듈 = 연결;

모델 작성:

conmongoose = required "mongoose";

constuserSchema = new mongoose입니다.스키마({...});
module.module = mongoose.model('User', userSchema);

『 』에 mongoose 설명서, 이것이 방법입니다.useMongoClient설정할 수 있습니다.

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

이에 대한 가장 쉬운 해결책:

터미널을 통해 프로젝트 루트 폴더에서 이 명령을 실행합니다.

npm remove mongoose

npm install mongoose@4.10.8 --save

문제는 해결됐습니다.

업그레이드가 항상 최선의 옵션은 아닙니다.

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

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!
});

오류:

중지 경고: (으)로 표시:open()= 에서 더 . mongoose > = 4.11.0을 사용하십시오.openUri() 대신설는합니다정또▁the다를 설정합니다.useMongoClient if 사하경옵션을 사용하는 connect()또는createConnection().

솔루션:useMongoClient를 설정하려면연결 속성에서 true

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

요청을 청취 중인 http://mongoosejs.com/docs/connections.html#use-mongo-client 을 참조하십시오.

Typescript를 사용하면 작동합니다.

var dbOpt : any = { 
    useMongoClient: true
} 
mongoose.connect(dbURI, dbOpt);

mongoose를 업그레이드하려면 먼저 다음 코드로 제거해야 합니다.

npm uninstall mongoose

그런 다음 다음 코드로 다시 설치합니다.

npm install mongoose  --save

언급URL : https://stackoverflow.com/questions/44749700/how-to-set-usemongoclient-mongoose-4-11-0

반응형