UseNewUrlParser параметрін true мәніне орнату арқылы «ағымдағы URL жол талдағышының ескіргені» ескертуін болдырмаңыз

Менде кейбір MongoDB данасына байланыс орнататын дерекқордың орауыш классы бар:

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

Бұл маған ескерту берді:

(түйін: 4833) DeprecationWarning: ағымдағы URL жол талдағышы ескірген және болашақ нұсқада жойылады. Жаңа талдаушыны пайдалану үшін {useNewUrlParser: true} параметрін MongoClient.connect-ға өткізіңіз.

connect() әдісі екінші аргумент ретінде MongoClientOptions данасын қабылдайды. Бірақ useNewUrlParser деп аталатын сипат жоқ. Сондай-ақ, осы сипатты қосылым жолына келесідей орнатуға тырыстым: mongodb: /127.0.0.1/my-db? UseNewUrlParser = true , бірақ ол ескертуге ешқандай әсер етпейді.

Сол ескертуді жою үшін useNewUrlParser параметрін қалай орнатуға болады? Бұл мен үшін өте маңызды, себебі скрипт cron ретінде жұмыс істейді және бұл ескертулер қоқыс-пошта спамына әкеледі.

3.0.18 ішіндегі сәйкес @ types/mongodb нұсқасымен 3.1.0-beta4 нұсқасында mongodb код>. Олардың екеуі де npm install пайдаланып, соңғы қол жетімді.

Айналып өту

Mongodb драйверінің ескі нұсқасын пайдалану:

«mongodb»: «~ 3.0.8», «@ types/mongodb»: «~ 3.0.18»

61
Бұл beta </​​code> нұсқасынан келеді, ол қандай да бір түрде демалыс күндері npm-ге шығарылды. API шынымен аяқталмайынша бұл туралы алаңдамаңыз. Сіз дұрыс нұсқаны орната аласыз.
қосылды автор Neil Lunn, көзі

9 жауаптар

Mongo нұсқаңызды тексеріңіз

mongo --version

If you are using version >= 4.0.0 change you mongo connection file to ->

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

or your mongoose connection file to ->

mongoose.connect("mongodb://localhost:27017/YourDB", { useNewUrlParser: true });
104
қосылды
Бұл жұмыс істемейді ...
қосылды автор Carnaru Valentin, көзі
Ти Абхишек, тітіркендіргіш ескертуді тоқтатады және шеберлік сияқты жұмыс істейді
қосылды автор Magnus Melwin, көзі
Бұл жұмыс істеу керек. Сіз қандай қателесіз?
қосылды автор Abhishek Sinha, көзі

3.1.0-beta4 нұсқасында айтылғандай, драйвердің шығарылымы «жабайы табиғатқа жіберілді». Шығарылым - MongoDB 4.0 жаңартылған шығарылымындағы жаңа мүмкіндіктерді қолдау және кейбір басқа API өзгерістерін жасау үшін атқарылып жатқан жұмыстардың бір бөлігі.

Ағымдағы ескертуді іске қосатын осындай өзгерістердің бірі useNewUrlParser параметрі болып табылады, себебі URI байланысының қалай жұмыс істейтіні туралы кейбір өзгерістерге байланысты. Бұдан кейінірек.

Істеулер «орныққанша» дейін үшін кішігірім нұсқаға </3.0.x шығарылымдары:

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

Бұл 3.1.x тармағын торап модульдеріне арналған «жаңа» қондырғыларда орнатуды тоқтату керек. Егер сізде «бета» нұсқасы бар «соңғы» шығарылымды орнатқан болсаңыз, онда пакеттеріңізді (және package-lock.json ) тазартып, оны < код> 3.0.x сериясының шығарылымы.

«Жаңа» қосылыс URI опцияларын қолданған болсақ, басты шектеу қосылым жолында port дегенді қамтуы керек:

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

})()

Бұл жаңа кодексте «қатаң» ереже. Негізгі сәтте ағымдағы коды «түйін-ана-жүргізуші» (npa

mongodb ) репозитарий коды және «жаңа кодекс» іс жүзінде mongodb-core кітапханасы, ол «қоғамдық» түйін драйверін «негіздейді».

«Опцияны» қосатын нүкте жаңа кодқа опцияны қосу арқылы «жеңілдетуге», яғни жаңа парсерге (іс жүзінде url ) опцияны қосу және жою туралы ескертуді тазартуда пайдаланылады және осылайша қосылым жолдарыңыз жаңа талдаушы күту.

Болашақ шығарылымдарда «мұра» парсерін алып тастайды, содан кейін жаңа талдаушы жай ғана опциясыз пайдаланылатын болады. Бірақ осы уақытқа дейін қолданыстағы барлық кодтарда жаңа талдаушы күткеннен бастап қолданыстағы қосылым жолдарын тексеруге жеткілікті мүмкіндік бар деп күтілуде.

Сондықтан жаңа драйверлердің мүмкіндіктерін шығарған кезде қолданғыңыз келсе, қол жетімді beta </​​code> және кейінгі шығарылымдарды пайдаланыңыз және жаңа парсерге арналған қосылым жолын қамтамасыз ететініне көз жеткізіңіз. useNewUrlParser параметрін MongoClient.connect() ішінде енгізіңіз.

Егер сізде MongoDB 4.0 шығарылымын алдын-ала қарауға қатысты мүмкіндіктерге қатынас қажет болмаса, онда нұсқаны бұрынғыдай көрсетілген 3.0.x сериясына бекітіңіз. Бұл құжатталған жұмыс істейді және «pinning» бұл тұрақты кодты орнатқыңыз келгенше 3.1.x шығарылымдары күтілетін тәуелділіктен «жаңартылмайды».

29
қосылды
Сіз «жабайы табиғатқа жіберілген» деп айтқаныңызда нені білдіретіні туралы көбірек ақпарат бар ма? 3.1.0-beta4 хайуанаттар паркінен қалай құтылды? Бұл туралы кез-келген сілтеме келтіре аласыз ба?
қосылды автор Wyck, көзі
Тым көп қос тырнақшалар.
қосылды автор sean, көзі

Мундусқа қосылуға арналған бөлінген код төменде, mongoose драйвері үшін ескерту шешілді

mongoose.connect('mongodb://localhost:27017/CGtruCust', { useNewUrlParser: true });
12
қосылды

Мәселе порт нөмірін беру және осы талдағышты пайдалану арқылы шешілуі мүмкін {useNewUrlParser: true}. шешім болуы мүмкін:

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

Бұл мәселені шешеді.

4
қосылды
Порт нөмірін қосқаныңыз үшін рахмет Меиди шабуыл жасады.
қосылды автор Matthew Spencer, көзі
Супер, мұнда да жұмыс істейді. Мехдиге рахмет
қосылды автор mustapha mekhatria, көзі
консольді connect ішінде useNewUrlParser сипатын қосу үшін шешім берді, бірақ сіздің шешіміңіз көмектесті. сондықтан жоғарыдан!
қосылды автор ganeshdeshmukh, көзі

{useNewUrlParser: true} қосылым функциясында ғана ауысатын ештеңе болмайды, ол жұмыс істейді

MongoClient.connect(url,{ useNewUrlParser: true },function(err,db){
  if(err){
      console.log(err);
  }
  else {
      console.log('connected to '+ url);
      db.close();
  }
})
4
қосылды

Менде бұл қалай болды, менің кеңесімде бірнеше күн бұрын жаңартылғанға дейін кеңес берілмеді.

.connect бар 3 парам, URI, опциялар және қате.

mongoose.connect(
    keys.getDbConnectionString(),
    { useNewUrlParser: true },
    err => {
        if (err) throw err;
        console.log(`Successfully connected to database.`);
    }
);
4
қосылды
**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.");
});
2
қосылды
Кейбір сипаттаманы қосыңыз
қосылды автор Billa, көзі

Бұл сызықтар басқа да ескерту ескертулеріне де қатысты болды:

const db = await mongoose.createConnection(url, { useNewUrlParser: true });
mongoose.set('useCreateIndex', true);
mongoose.set('useFindAndModify', false);
0
қосылды

Mlab.com-ды mongo дерекқоры ретінде қолдандым. Қосылым жолын config деп аталатын басқа қалтаға және ішіндегі keys.js ішіне бөлдім. Қосылым жолын сақтадым

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

module.exports = {
  mongoURI: "mongodb://username:[email protected]:47267/projectname"
};
</div> </div>

және сервер коды болды

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

const express = require("express");
const mongoose = require("mongoose");
const app = express();

//DB config
const db = require("./config/keys").mongoURI;

//connect to mongo DB

mongoose
  .connect(
    db,
    { useNewUrlParser: true } //need this for api support
  )
  .then(() => console.log("mongoDB connected"))
  .catch(err => console.log(err));

app.get("/", (req, res) => res.send("hello!!"));

const port = process.env.PORT || 5000;

app.listen(port,() => console.log(`Server running on port ${port}`)); //tilda not inverted comma
</div> </div>

жоғарыда айтылғандай байланыс жолынан кейін {useNewUrlParser: шын} жазыңыз.

жай ғана сізге керек:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

mongoose.connect(connectionString,{ useNewUrlParser: true } 
//or
MongoClient.connect(connectionString,{ useNewUrlParser: true } 


      
</div> </div>
0
қосылды