복붙노트

[MONGODB] 피 경고 true로 useNewUrlParser을 설정하여 "현재의 URL 문자열 파서는 사용되지 않습니다"

MONGODB

피 경고 true로 useNewUrlParser을 설정하여 "현재의 URL 문자열 파서는 사용되지 않습니다"

좀 MongoDB의 인스턴스에 대한 연결을 설정 데이터베이스 래퍼 클래스를 가지고 :

async connect(connectionString: string): Promise<void> {
        this.client = await MongoClient.connect(connectionString)
        this.db = this.client.db()
}

이것은 나에게 경고를했다 :

연결 () 메소드는 두번째 인수로 MongoClientOptions 인스턴스를 수용한다. 그러나 useNewUrlParser라는 속성이 없습니다. ? //127.0.0.1/my-db useNewUrlParser = 사실이지만 그 경고에 영향을주지 않습니다 : MongoDB를 : 나는이 같은 연결 문자열에 이러한 속성을 설정했습니다.

그래서 내가 어떻게 useNewUrlParser 그 경고를 제거하기 위해 설정할 수 있습니까? 스크립트가 크론으로 실행해야하고 그 경고가 쓰레기 메일 스팸을 초래할 때문에 나에게 중요하다.

나는 3.0.18에서 유형 / MongoDB를 패키지 @ 해당하는 버전 3.1.0-beta4에서 MongoDB의 드라이버를 사용하고 있습니다. 둘 다 설치 NPM 사용하여 최신 사용 가능한입니다.

MongoDB를 드라이버의 이전 버전을 사용 :

"mongodb": "~3.0.8",
"@types/mongodb": "~3.0.18"

해결법

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

    1.당신의 MongoDB의 버전을 확인합니다

    당신의 MongoDB의 버전을 확인합니다

    mongo --version
    

    이 버전> = 3.1.0 변화를 사용하는 경우 연결 파일을 몽고 ->

    MongoClient.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true })
    

    또는 몽구스 연결 파일 ->

    mongoose.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true });
    

    이상적으로는 버전 4 기능 만 v3.1.0의 이상도 그것을 지원하고있다. 자세한 내용은 MongoDB를 Github에서 체크 아웃.

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

    2.언급 한 바와 같이 운전자의 3.1.0-beta4 자료는 초기 사물의 모양에 의해 약간의 "야생으로 발표"를 받았습니다. 출시는 진행중인 작업의 일부가 MongoDB를 4.0 향후 릴리스에서 새로운 기능을 지원하고 다른 API 변경 사항을 확인하는 것입니다.

    언급 한 바와 같이 운전자의 3.1.0-beta4 자료는 초기 사물의 모양에 의해 약간의 "야생으로 발표"를 받았습니다. 출시는 진행중인 작업의 일부가 MongoDB를 4.0 향후 릴리스에서 새로운 기능을 지원하고 다른 API 변경 사항을 확인하는 것입니다.

    현재 경고를 트리거 한 이러한 변화로 인해 URI가 실제로 작동 연결을 전달하는 방법을 주위에 약간의 변화 때문에, useNewUrlParser 옵션입니다. 더 나중에합니다.

    일 "정착 아래로"까지, 아마 적어도 3.0.x의 릴리스에 대한 마이너 버전으로 "핀"에 대한 것이 바람직 할 것입니다 :

      "dependencies": {
        "mongodb": "~3.0.8"
      }
    

    즉, 3.1.X 지점이 노드 모듈에 "신선한"설치에 설치되는 중지해야합니다. 당신이 이미 다음 패키지를 정리 (및 패키지 lock.json)한다은 "베타"버전 인 "최신"릴리스를 설치하게했다면 반드시 당신은 3.0.x의 시리즈 출시로 그 아래 범프.

    실제로 "새로운"연결 URI 옵션을 사용하기위한 주요 제한은 연결 문자열에 포트를 포함 실제로합니다 :

    const { MongoClient } = require("mongodb");
    const uri = 'mongodb://localhost:27017';  // mongodb://localhost - will fail
    
    (async function() {
      try {
    
        const client = await MongoClient.connect(uri,{ useNewUrlParser: true });
        // ... anything
    
        client.close();
      } catch(e) {
        console.error(e)
      }
    
    })()
    

    즉, 새로운 코드의 더 "엄격한"규칙입니다. 현재 코드는 기본적으로 "노드 기본 드라이버"(NPM MongoDB를) 저장소 코드 및 "새로운 코드"는 MongoDB의 핵심 라이브러리 "뒷받침"는 "공개"노드에서 실제로 수입의 일부임을되는 주요 포인트 운전사.

    추가되는 "옵션"의 요점은 "쉽게"(실제로 URL을 기반으로) 새로운 파서를 사용하는 있도록 옵션을 추가 코드에 새로운 코드에 옵션을 추가하고 중단 경고를 삭제, 따라서 확인하여 전환하는 것입니다 연결 문자열이 전달 된 것으로 실제로 새로운 파서가 기대하고 무엇을 준수합니다.

    향후 릴리스에서 '레거시'파서는 제거 될 것이다 다음 새 파서는 단순히 심지어 옵션없이 사용되는지됩니다. 하지만 그 시간, 기존의 모든 코드가 새로운 파서가 기대하고 무엇에 대해 기존의 연결 문자열을 테스트 할 수있는 충분한 기회를 가졌다 것으로 예상된다.

    당신이이 출시 될 때 새로운 드라이버 기능을 사용하기 시작 싶다면, 다음 (당신이 MongoClient.connect에서 useNewUrlParser의 옵션을 사용하여 새 파서에 대한 유효한 연결 문자열을 제공하고 있는지 이상적으로 사용할 수있는 베타 및 후속 릴리스를 사용하고 ).

    실제로 MongoDB를 4.0 릴리스의 미리보기에 관련된 기능에 액세스 할 필요가없는 경우 앞서 언급 한 바와 같이, 다음 3.0.x의 시리즈 버전을 핀. 당신이 실제로 안정 버전을 설치할 때까지 3.1.X 출시가 예상 의존성을 통해 "업데이트"되지 않도록이 보장하지만를 "고정"문서화 등이 작동합니다.

  3. ==============================

    3.몽구스 연결에 아래에 강조 코드는 몽구스 드라이버에 대한 경고를 해결

    몽구스 연결에 아래에 강조 코드는 몽구스 드라이버에 대한 경고를 해결

    mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
    
  4. ==============================

    4.변화에 아무것도, 연결 기능 만 통과하지 {useNewUrlParser : TRUE}이 의지 작업

    변화에 아무것도, 연결 기능 만 통과하지 {useNewUrlParser : TRUE}이 의지 작업

    MongoClient.connect(url,{ useNewUrlParser: true },function(err,db){
      if(err){
          console.log(err);
      }
      else {
          console.log('connected to '+ url);
          db.close();
      }
    })
    
  5. ==============================

    5.mongoose.connect () 방법 : 추가 {사실 useNewUrlParser}해야합니다.

    mongoose.connect () 방법 : 추가 {사실 useNewUrlParser}해야합니다.

    mongoose.connect('mongodb://localhost:27017/Notification',{ useNewUrlParser: true });
    
  6. ==============================

    6.연결 문자열 형식은 MongoDB를해야합니다 : // 사용자 : 암호 @ 호스트 : 포트 / DB

    연결 문자열 형식은 MongoDB를해야합니다 : // 사용자 : 암호 @ 호스트 : 포트 / DB

    예를 들면 :

    MongoClient.connect('mongodb://user:password@127.0.0.1:27017/yourDB', { useNewUrlParser: true } )
    
  7. ==============================

    7.난 당신이 추가 {: 사실 useNewUrlParser} 필요가 있다고 생각하지 않습니다.

    난 당신이 추가 {: 사실 useNewUrlParser} 필요가 있다고 생각하지 않습니다.

    이미 새 URL 파서를 사용하려는 경우 그것은 당신에게 달려 있습니다. 몽고는 새로운 URL을 파서로 전환 할 때 결국 경고가 사라집니다.

    편집하다: 여기 https://docs.mongodb.com/master/reference/connection-string/ 지정으로 포트 번호를 설정할 필요가 없습니다.

    다만 {useNewUrlParser : 사실}를 추가하면 충분하다.

  8. ==============================

    8.MongoDB를 INC도 제공합니다 잘못된 ES8 데모 코드는이 경고를 생성합니다.

    MongoDB를 INC도 제공합니다 잘못된 ES8 데모 코드는이 경고를 생성합니다.

    MongoDB를이 잘못 다음과 같은 조언을 제공

    이렇게하면 다음과 같은 오류가 발생합니다 :

    대신 옵션은 새로운 MongoClient에 제공해야합니다 :

    코드를 아래 참조 :

    const DATABASE_NAME = 'mydatabase',
        URL = `mongodb://localhost:27017/${DATABASE_NAME}`
    
    module.exports = async function() {
        const client = new MongoClient(URL, {useNewUrlParser: true})
        var db = null
        try {
            // Note this breaks.
            // await client.connect({useNewUrlParser: true})
            await client.connect()
            db = client.db(DATABASE_NAME)
        } catch (err) {
            console.log(err.stack)
        }
    
        return db
    }
    
  9. ==============================

    9.문제는 포트 번호를주고이 파서를 사용하여 해결 될 수있다 {useNewUrlParser : TRUE}. 해결책이 될 수 있습니다 :

    문제는 포트 번호를주고이 파서를 사용하여 해결 될 수있다 {useNewUrlParser : TRUE}. 해결책이 될 수 있습니다 :

    mongoose.connect("mongodb://localhost:27017/cat_app", { useNewUrlParser: true });
    

    그것은 내 문제를 해결합니다.

  10. ==============================

    10.전송 expressJS, API를 호출하는 경우와 JSON에 대한 완전한 예는 다음과 같다 :

    전송 expressJS, API를 호출하는 경우와 JSON에 대한 완전한 예는 다음과 같다 :

    ...
    app.get('/api/myApi', (req, res) => {
      MongoClient.connect('mongodb://user:password@domain.com:port/dbname',
        { useNewUrlParser: true }, (err, db) => {
    
          if (err) throw err
          const dbo = db.db('dbname')
          dbo.collection('myCollection')
            .find({}, { _id: 0 })
            .sort({ _id: -1 })
            .toArray(
              (errFind, result) => {
                if (errFind) throw errFind
                const resultJson = JSON.stringify(result)
                console.log('find:', resultJson)
                res.send(resultJson)
                db.close()
              },
            )
        })
    }
    
  11. ==============================

    11.당신은 추가해야합니다

    당신은 추가해야합니다

    mongoose.connect 방법 안쪽

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

    12.여기에 내가 전에 일 NPM 부부를 업데이트 할 때까지 내가 얼마나, 힌트가 내 콘솔에 표시하지 않았다입니다.

    여기에 내가 전에 일 NPM 부부를 업데이트 할 때까지 내가 얼마나, 힌트가 내 콘솔에 표시하지 않았다입니다.

    .connect 3 PARAMS의 URI, 옵션 및 ERR 있습니다.

    mongoose.connect(
        keys.getDbConnectionString(),
        { useNewUrlParser: true },
        err => {
            if (err) throw err;
            console.log(`Successfully connected to database.`);
        }
    );
    
  13. ==============================

    13.

    **We were using** 
    mongoose.connect("mongodb://localhost/mean-course").then(
      (res) => {
       console.log("Connected to Database Successfully.")
      }
    ).catch(() => {
      console.log("Conntection to database failed.");
    });
    
    *-----> This gives url parser error*
    
    
    
    **Correct Syntax is**:
    
    mongoose.connect("mongodb://localhost:27017/mean-course" , { useNewUrlParser: true }).then(
      (res) => {
       console.log("Connected to Database Successfully.")
      }
    ).catch(() => {
      console.log("Conntection to database failed.");
    });
    
  14. ==============================

    14.당신은 다음과 같이 데이터베이스에 연결하기 전에 일을 다음과 설정해야합니다 :

    당신은 다음과 같이 데이터베이스에 연결하기 전에 일을 다음과 설정해야합니다 :

    const mongoose = require('mongoose');
    
    mongoose.set('useNewUrlParser', true);
    mongoose.set('useFindAndModify', false);
    mongoose.set('useCreateIndex', true);
    mongoose.set('useUnifiedTopology', true);
    
    mongoose.connect('mongodb://localhost/testaroo');
    

    또한,

    Replace update() with updateOne(), updateMany(), or replaceOne()
    Replace remove() with deleteOne() or deleteMany().
    Replace count() with countDocuments(), unless you want to count how many documents are in the whole collection (no filter). 
    In the latter case, use estimatedDocumentCount().
    
  15. ==============================

    15.나는 몽고 데이터베이스로 mlab.com을 사용하고 있었다. I는 다른 폴더라는 구성으로 연결 문자열을 분리 keys.js 내부 I이었다 연결 문자열을 유지

    나는 몽고 데이터베이스로 mlab.com을 사용하고 있었다. I는 다른 폴더라는 구성으로 연결 문자열을 분리 keys.js 내부 I이었다 연결 문자열을 유지

    module.exports = {   mongoURI : "MongoDB를 : // 사용자 이름 : password@ds147267.mlab.com : 47267 / 프로젝트 이름" };

    서버 코드이었다

    CONST =이 ( "표현")를 요구 표현; CONST는이 = ( "몽구스")를 필요로 몽구스; CONST 응용 프로그램 =)은 (표현; // DB의 설정 CONST DB를 =는 ( "./ 설정 / 키")를 필요로 mongoURI을.; // DB를 몽고에 연결 몽구스   .잇다(     DB,     {useNewUrlParser : TRUE} // API 지원이 필요   )   그 때는 (() => CONSOLE.LOG () "MongoDB를 연결")   .catch (ERR => CONSOLE.LOG (ERR)); app.get ( "/"(REQ, 해상도) => res.send ( "안녕하십니까!")); CONST 포트 = process.env.PORT || 5000; app.listen (포트, () =>을 console.log ( '서버 포트 $ {포트}`)에서 실행); // 틸다 반전되지 쉼표

    제가 위에서처럼 연결 문자열 후 : 당신은 쓰기에 {사실 useNewUrlParser}을해야합니다.

    단순히 당신이 할 필요가 넣어 :

    mongoose.connect (ConnectionString을, {useNewUrlParser : TRUE} //또는 MongoClient.connect (ConnectionString을, {useNewUrlParser : TRUE}

  16. ==============================

    16.이 라인은 너무 다른 모든 중단 경고에 대한 속임수를 썼는지 :

    이 라인은 너무 다른 모든 중단 경고에 대한 속임수를 썼는지 :

    const db = await mongoose.createConnection(url, { useNewUrlParser: true });
    mongoose.set('useCreateIndex', true);
    mongoose.set('useFindAndModify', false);
    
  17. ==============================

    17.내 프로젝트에 대한 몽구스 5.x 버전을 사용하고 있습니다. 몽구스 패키지를 요구 한 후, 다음과 같이 전 세계적으로 값을 설정합니다.

    내 프로젝트에 대한 몽구스 5.x 버전을 사용하고 있습니다. 몽구스 패키지를 요구 한 후, 다음과 같이 전 세계적으로 값을 설정합니다.

    const mongoose = require('mongoose');
    
    // set the global useNewUrlParser option to turn on useNewUrlParser for every connection by default.
    mongoose.set('useNewUrlParser', true);
    

    친구 미소 유지 :)

  18. ==============================

    18.사용자 이름이나 암호 문자 @ 경우. 다음과 같이 사용

    사용자 이름이나 암호 문자 @ 경우. 다음과 같이 사용

    mongoose
        .connect(
            'DB_url',
            { user: '@dmin', pass: 'p@ssword', useNewUrlParser: true }
        )
        .then(() => console.log('Connected to MongoDB'))
        .catch(err => console.log('Could not connect to MongoDB', err));
    
  19. from https://stackoverflow.com/questions/50448272/avoid-current-url-string-parser-is-deprecated-warning-by-setting-usenewurlpars by cc-by-sa and MIT license