Mongo db соединение не устанавливается - PullRequest
0 голосов
/ 27 ноября 2018

Ниже приведен код, который я использовал для запуска сервера.Он работает на локальном сервере 3000.

app.use('/', books);

app.listen(3000, function(){
    console.log('Server running at port 3000: http://localhost:3000')
});

Ниже код выдает ошибку mongodb.Не знаю, что именно ошибка.Ниже приведен мой код

var express = require('express');
var router = express.Router();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://127.0.0.1:27017';

// SHOW LIST OF BOOKS
router.get('/book', function(req, res, next) {  
    MongoClient.connect(url, function(error, db) {
      if (error) throw error;
      var dbo = db.db("BookStore");
      dbo.collection("Books").find().toArray(function(err, result) {
        if (err) throw err;
        res.send(result);
        console.log(result);
        db.close();
      });
    });
});

// SHOW BOOK with ISBN
router.get('/book/:isbn', function(req, res, next) {
    var isbn = parseInt(req.params.isbn);   
    MongoClient.connect(url, function(error, db) {
      if (error) throw error;
      var dbo = db.db("BookStore");
      var query = { "isbn": isbn };
      dbo.collection("Books").findOne(query, function(err, result) {
        if (err) throw err;
        res.send(result);
        console.log(result);
        db.close();
      });
    });
});


// Add BOOK
router.post('/book', function(req, res, next) { 
    MongoClient.connect(url, function(error, db) {
      if (error) throw error;
      var dbo = db.db("BookStore");
      var myobj = {
        "isbn":req.body.isbn,
        "publisher":req.body.publisher,
        "title":req.body.title,
        "authors":req.body.authors,
        "publishedDate":req.body.publishedDate,
        "price":req.body.price
      };
      dbo.collection("Books").insertOne(myobj, function(err, result) {
        if (err) throw err;
        res.send('Book with '+req.body.isbn+' is successfully added');
        db.close();
      });
    });
});

// UPDATE BOOK
router.put('/book/:isbn', function(req, res, next) {
    var isbn = parseInt(req.params.isbn);
    MongoClient.connect(url, function(error, db) {
      if (error) throw error;
      var dbo = db.db("BookStore");
      var query = { "isbn": isbn };
      var newvalues = { $set: {
            "publisher":req.body.publisher,
            "title":req.body.title,
            "authors":req.body.authors,
            "publishedDate":req.body.publishedDate,
            "price":req.body.price
          }
        };
      dbo.collection("Books").updateOne(query, newvalues, function(err, result) {
        if (err) throw err;
        res.send('Book with '+req.params.isbn+' is successfully updated');
        db.close();
      });
    });
});


// DELETE BOOK
router.delete('/book/:isbn', function(req, res, next) {
    var isbn = parseInt(req.params.isbn);
    MongoClient.connect(url, function(error, db) {
      if (error) throw error;
      var dbo = db.db("BookStore");
      var query = { "isbn": isbn };
      dbo.collection("Books").deleteMany(query, function(err, result) {
        if (err) throw err;
        res.send('Book with '+req.params.isbn+' is successfully removed');
        db.close();
      });
    });
});

module.exports = router;

Объяснение кода:

Мы создаем маршрут к нашему приложению под названием «Книги».Поэтому, когда кто-нибудь просматривает http://localhost:3000/books нашего приложения, будет выполняться фрагмент кода, определенный для этого маршрута.

Здесь мы получаем все записи в нашей коллекции 'Books' через базу данных.collection ('Книги'). команда find ().Затем мы присваиваем эту коллекцию переменной, называемой курсором.Используя эту переменную курсора, мы сможем просмотреть все записи коллекции.

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

На самом деле ошибка связана с версией MongoDB (MongoClient.connect(url, function(error, db)), разработчики MongoDB изменили свой API.Я не знаю, какая версия, выдает ошибку при использовании MongoClient.connect(url, function(error, db).Так и должно быть MongoClient.connect(url, function(err, client) Ссылка на api-doc

И не забудьте запустить mongod

0 голосов
/ 28 ноября 2018

Запуск sudo mongod в терминале

0 голосов
/ 27 ноября 2018

Невозможно подключиться, даже если вы измените значение, присвоенное переменной url на mongodb: // [имя_пользователя]: [пароль] @ 127.0.0.1: 27017 / [имя_базы_данных]? authSource = admin ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...