J'ai écrit le code suivant pour connecter mongodb via un pilote natif qui a été installé avec npm install mongodb --save
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://127.0.0.1:27017";
const dbName = "game-of-thrones";
let db;
MongoClient.connect(
url,
{ useNewUrlParser: true },
(err, client) => {
if (err) return console.log(err);
db = client.db(dbName);
console.log(`Connected MongoDB: ${url}`);
console.log(`Database: ${dbName}`);
}
);
Lorsque j'écris sur le terminal node server.js
J'ai eu l'erreur suivante
(nœud: 3500) DeprecationWarning: le moteur actuel de découverte et de surveillance du serveur est obsolète et sera supprimé dans une future version. Pour utiliser le nouveau moteur de découverte et de surveillance du serveur, transmettez l'option {useUnifiedTopology: true} à MongoClient.connect. MongoDB connecté: mongodb: //127.0.0.1: 27017 Base de données: game-of-thrones
La base de données est connectée, mais comment puis-je me débarrasser de l'avertissement
J'ai essayé tout ça. Le code ci-dessous indique immédiatement 'Terminé'. Pas d'erreur mais pas de résultat non plus. Après un certain temps, je reçois:
Promise { <pending> }
the options [servers] is not supported
the options [caseTranslate] is not supported
the options [dbName] is not supported
the options [credentials] is not supported
Finished
(node:111766) UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection timed out after 30000 ms
code (où le nom d'utilisateur et le mot de passe sont remplacés par les données réelles):
const url = 'mongodb://username:password@localhost:27017';
const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient(url, {useUnifiedTopology: true});
client.connect().then((client)=>{
var db = client.db('MYDB');
console.log ('Retrieving data');
db.collection('products').find().toArray(function (err, result) {
if (err) throw err
console.log(result);
});
});
console.log('Finished');
mon package.json contient:
"connect-mongo": "^3.2.0",
"mongodb": "^3.4.1"