사용 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.json
is)
실행:
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
'bestsource' 카테고리의 다른 글
VB.NET: ComboBox에서 사용자 입력을 방지하는 방법 (0) | 2023.05.29 |
---|---|
문자열 목록을 구분 기호로 구분된 문자열로 변환 (0) | 2023.05.29 |
ASP.NET MVC Core의 드롭다운 목록에 열거형 사용 (0) | 2023.05.29 |
수학은 어때요?.NET Framework에 구현된 Pow()? (0) | 2023.05.29 |
Angular - 구성 요소에서 module.id 의 의미는 무엇입니까? (0) | 2023.05.29 |