Как соединить mongodb с nodejs в одной (единственной) капле в цифровом океане - PullRequest
1 голос
/ 06 июля 2019

Я попытался подключить приложение mongodb и серверный сервер узлов (URL запроса https://services.suriyashopping.com/api/menu-list) в одной и той же капле. Серверное приложение nodejs и сервер mongodb, работающие в одной капле и сервере, размещенном в поддомене. Я упомянул мой код подключения к БД ниже, и я получил успешное завершение при запуске сервера "nodemon app.js". Но после этого я сделал запрос от клиента к серверу, затем я получил некоторую несанкционированную ошибку. Еще один вопрос, почему DB и связанные коллекции не генерируются автоматически во время выполнения сервер через терминал Ubuntu "nodemon app.js". Я использую серверный блок nginix для указания субдомена. Если я запускаю сервер на моей локальной машине, будет сгенерирована БД и соответствующая коллекция. Но здесь она не генерируется.

NodeJs, Express, mongodb, mongoose, linux 16.04, nginix для серверного блока для указания субдомена

Код подключения MongoDB

Я пытался использовать IP-адрес капли как локальный IP-адрес "127.0.0.1", а также свой капель "142.93.215.18"

mongoose.connect('mongodb://dbuser:dbpassword@dropletip:27017/SURIYAShoppingDB', 
  { useNewUrlParser: true }, (err, res) => {
        if(err) {
      console.log(err);
    }
    else {
      console.log('MongoDB connection succeeded.');
    }
  })

Ожидаемый результат

Я попробовал этот URL-адрес запроса, чтобы получить ответ (если есть) https://services.suriyashopping.com/api/menu-list

Фактический результат

{ MongoError: not authorized on SURIYAShoppingDB to execute command { find: "maincategories", filter: { status: "true", active_status: "true" }, projection: { __v: false, catgoryImage: false, active_status: false, status: false, createdAt: false, updatedAt: false }, returnKey: false, showRecordId: false }
    at Connection.<anonymous> (/var/www/services.suriyashopping.com/html/node_modules/mongodb-core/lib/connection/pool.js:443:61)
    at Connection.emit (events.js:198:13)
    at processMessage (/var/www/services.suriyashopping.com/html/node_modules/mongodb-core/lib/connection/connection.js:364:10)
    at Socket.<anonymous> (/var/www/services.suriyashopping.com/html/node_modules/mongodb-core/lib/connection/connection.js:533:15)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
  ok: 0,
  errmsg:
   'not authorized on SURIYAShoppingDB to execute command { find: "maincategories", filter: { status: "true", active_status: "true" }, projection: { __v: false, catgoryImage: false, active_status: false, status: false, createdAt: false, updatedAt: false }, returnKey: false, showRecordId: false }',
  code: 13,
  name: 'MongoError',
  [Symbol(mongoErrorContextSymbol)]: {} }
(node:28975) DeprecationWarning: collection.count is deprecated, and will be removed in a future version. Use collection.countDocuments or collection.estimatedDocumentCount instead

Мой статус UFW

mydroplet:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
27017                      ALLOW       142.93.215.18
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

...