Невозможно прочитать свойство 'db' нулевого JavaScript с посылкой - PullRequest
0 голосов
/ 27 июня 2019

Я попытался настроить систему mongodb с моей картой openlayers, но она не работает: Uncaught TypeError: Невозможно прочитать свойство 'db' из null.Моя часть кода о mongodb:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/";
    MongoClient.connect(url, function(err, db) {
            var tapDB = db.db("tapDB"); //<-- here is the error


})

Я полагаю, что эта ошибка может быть из-за того, что я использую npm start instear узла server.js, но я не уверен, потому что я новичок.Mongodb запускается с помощью cmd с помощью следующей команды: «mongod», а затем mongo на другом cmd.

UPDATE : для всех, кто сталкивается с той же проблемой, что и я, я бы порекомендовалудаление посылки.Это то, что я сделал, и теперь он отлично работает

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Я полагаю, что в настоящее время вы вводите url не в том месте - вам необходимо указать URL-адрес MongoClient перед вызовом .connect. Согласно документации драйвера MongoDB Node.js, она должна выглядеть так:

const MongoClient = require('mongodb').MongoClient;

const url = 'mongodb://localhost:27017';
const dbName = 'tapDB';
const client = new MongoClient(url);

client.connect(function(err) {
  console.log("Connected successfully to server");
  const db = client.db(dbName);

  // use database connection here

  client.close();
});

Посмотрите документацию здесь: http://mongodb.github.io/node-mongodb-native/3.2/tutorials/connect/

UPDATE:

Вы также можете сделать выше, используя ES6 async / await, который в долгосрочной перспективе проще в использовании, чем обратный вызов или собственные обещания, это наша установка:

const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'tapDB';

(async () => { // async/await function that will run immediately

  let client;
  try {
    client = await MongoClient.connect(url);
  } catch (err) { throw err; }
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  let res;
  try {
    res = await db.collection("markers").insertMany([{ test1: true, test2: "3/5" }]);
  } catch (err) { throw err; }

  try {
    await client.close();
  } catch (err) { throw err; }
});
0 голосов
/ 27 июня 2019

Использование Javascript Promises ES6 - это более понятный код

Смотри мой код

const {MongoClient} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017', { useNewUrlParser: true }).then(client => {
    console.log('Connected to MongoDB server')

    const db = client.db('dbName')

    // Here you can place your operations with the bd

    client.close();
}, e => console.log('Error to connect', e))

Я надеюсь, что помог

Удачи!

...