Node.js 앱과 함께 Mongoose를 사용하고 있으며 이것이 내 구성입니다.
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}).then(()=>{
console.log(`connection to database established`)
}).catch(err=>{
console.log(`db error ${err.message}`);
process.exit(-1)
})
하지만 콘솔에서는 여전히 경고를 표시합니다.
DeprecationWarning : 현재 서버 검색 및 모니터링 엔진은 더 이상 사용되지 않으며 향후 버전에서 제거 될 예정입니다. 새 서버 검색 및 모니터링 엔진을 사용하려면 {useUnifiedTopology : true} 옵션을 MongoClient 생성자에 전달합니다.
무엇이 문제입니까? useUnifiedTopology
전에는 사용하지 않았지만 지금은 콘솔에 표시됩니다. 구성에 추가했지만 여전히이 경고가 표시됩니다. 왜 그런가요? 나는조차 사용하지 않는다 MongoClient
.
편집하다
Felipe Plets가 대답했듯이 Mongoose에 문제가 있었고 이후 버전에서이 버그를 수정했습니다. 따라서 몽구스 버전을 업데이트하여 문제를 해결할 수 있습니다.
답변
최신 정보
Mongoose 5.7.1이 릴리스되었으며 문제를 해결하는 것으로 보이므로 useUnifiedTopology
옵션 설정이 예상대로 작동합니다.
mongoose.connect(mongoConnectionString, {useNewUrlParser: true, useUnifiedTopology: true});
원래 답변
나는 같은 문제에 직면했고 Mongoose 코드에 대해 자세히 알아보기로 결정했습니다 : https://github.com/Automattic/mongoose/search?q=useUnifiedTopology&unscoped_q=useUnifiedTopology
Mongoose 버전 5.7에 추가 된 옵션이며 아직 잘 문서화되지 않은 것 같습니다. 도서관 역사 https://github.com/Automattic/mongoose/blob/master/History.md 에서도 언급되지 않았습니다.
코드의 주석에 따르면 :
- @param {Boolean} [options.useUnifiedTopology = false] 기본적으로 False입니다. 로 설정
true
MongoDB를 드라이버의 복제 세트에서 선택하는 엔진을 모니터링 클러스터를 분산됩니다.
이 오류에 대한 프로젝트 GitHub에도 문제가 있습니다. https://github.com/Automattic/mongoose/issues/8156
제 경우에는 복제본 세트 또는 샤딩 된 클러스터에서 Mongoose를 사용하지 않으며 옵션이 false 여야합니다. 그러나 거짓이면 설정이 참이어야한다고 불평합니다. 일단 사실이면 내 데이터베이스가 복제 세트 또는 샤딩 된 클러스터에서 실행되지 않기 때문에 여전히 작동하지 않습니다.
5.6.13으로 다운 그레이드했고 프로젝트가 다시 정상적으로 작동합니다. 따라서 지금 내가 볼 수있는 유일한 옵션은 다운 그레이드하고 수정 사항이 최신 버전으로 업데이트 될 때까지 기다리는 것입니다.
답변
mongoDB에서는 현재 서버 및 엔진 모니터링 패키지가 더 이상 사용되지 않으므로 새 서버 및 엔진 모니터링 패키지를 사용해야합니다. 그래서 당신은
{useUnifiedTopology : true}
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });
답변
이것은 내 문제를 해결했습니다.
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url, {useUnifiedTopology: true});
답변
당신은 async await를 시도 할 수 있습니다
const connectDB = async () => {
try {
await mongoose.connect(<database url>, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false
});
console.log("MongoDB Conected")
} catch (err) {
console.error(err.message);
process.exit(1);
}
};
답변
useUnifiedTopology 옵션을 추가하고 true로 설정하십시오 .
나머지 DeprecationWarning을 처리 할 mongoose.connect 옵션 의 다른 3 개 구성을 설정 합니다.
이 구성은 나를 위해 작동합니다!
const url = 'mongodb://localhost:27017/db_name';
mongoose.connect(
url,
{
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
}
)
이것은 4 DeprecationWarning 을 해결 합니다.
- 현재 URL 문자열 파서는 더 이상 사용되지 않으며 향후 버전에서 제거 될 예정입니다. 새 파서를 사용하려면 {useNewUrlParser : true} 옵션을 MongoClient.connect에 전달합니다.
- 현재 서버 검색 및 모니터링 엔진은 더 이상 사용되지 않으며 향후 버전에서 제거됩니다. 새 서버 검색 및 모니터링 엔진을 사용하려면 {useUnifiedTopology : true} 옵션을 MongoClient 생성자에 전달합니다.
- Collection.ensureIndex는 더 이상 사용되지 않습니다. 대신 createIndexes를 사용하십시오.
- DeprecationWarning : 몽구스
findOneAndUpdate()
와findOneAndDelete()
를 빼고useFindAndModify
false로 옵션 세트가 사용되지 않습니다. 참조 : https://mongoosejs.com/docs/deprecations.html#-findandmodify- .
도움이 되었기를 바랍니다.
답변
해당 오류를 방지하려면 다음 코드를 사용하십시오.
MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});
답변
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });
다음 오류를 제거합니다.
(node : 7481) DeprecationWarning : 현재 URL 문자열 파서는 더 이상 사용되지 않으며 향후 버전에서 제거 될 예정입니다. 새 파서를 사용하려면 {useNewUrlParser : true} 옵션을 MongoClient.connect에 전달합니다.
(node : 7481) DeprecationWarning : 현재 서버 검색 및 모니터링 엔진은 더 이상 사용되지 않으며 향후 버전에서 제거 될 예정입니다. 새 서버 검색 및 모니터링 엔진을 사용하려면 {useUnifiedTopology : true} 옵션을 MongoClient 생성자에 전달합니다.