Не удается подключить функции Azure к MongoDB (создан в Azure) - PullRequest
0 голосов
/ 01 октября 2018

У меня есть настройка MongoDB для Azure, и я пытаюсь подключиться к ней через функцию Azure.

Я предпринял следующие шаги:

  1. Создание простой функции Azure
  2. Установил драйвер MongoDB в Azure. Чтобы установить драйвер MongoDB Node.js, я пошел на .scm.azurewebsites.net и нажал «Консоль отладки» -> «PowerShell».
  3. Я перешел в каталог D: \ home \ site \ wwwroot и щелкнул значок плюса, чтобы создать новый файл с именем package.json.
  4. I Я создал и сохранил приведенный ниже файл package.json.

      {
      "name": "nameofunction",
      "dependencies": {
       "mongodb": "3.x"
      }
    }
    
  5. Затем я запустил npm install из оболочки.
  6. Из функции Azure я должен иметь возможность подключиться к MongoDB и выполнить запрос, используякод ниже.

    const  mongodb = require('mongodb');
    const  url = "mongodb://cosmod:  <PASSWORD>==@cosmodb.documents.azure.com:10255/?ssl=true&replicaSet=globaldb";
    
    module.exports = async function (context, req) {
        mongodb.connect(url, function(error, client) {        
          if (error) throw error;
          var dbo = client.db("mydb");
          dbo.createCollection("customers", function(err, res) {
             if (err) throw err;
             context.log("Collection created!");
             db.close();
          });         
       });
     };
    

Мой код выдает Status: 500 Internal Server Error

Чем больше я смотрю на код, тем больше я не могу понять, почему этоне должно работать.У package-lock.json есть все зависимости, загруженные после того, как я запустил npm install в оболочке.

Я ценю любую помощь в решении этой проблемы.

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Статус: 500 Внутренняя ошибка сервера

Я предполагаю, что это связано с кодом mongodb.connect(url, function(error, client)

. Пожалуйста, измените код на

mongodb.MongoClient.connect(uri, function(error, client)

0 голосов
/ 02 октября 2018

Обзор учетной записи Azure Cosmos DB - документация по быстрому запуску, доступная через боковую панель меню учетной записи Azure Cosmos DB;Подключение приложения MongoDB среди прочего осуществляется через:

  1. драйвер Node.js 2.2 и
  2. драйвер Node.js 3.0

Я использовалСтрока подключения драйвера Node.js 2.2 в функции azure, которая не совместима с зависимостью драйвера Node.js 3+ в моем приложении.Используя строку подключения драйвера Node.js 3.0, я смог подключить приложение MongoDB без ошибок.Знак двойного равенства в строке пароля - это URL, закодированный в драйвере 3+.

Node.js 3+ driver connection string

 var mongoClient = require("mongodb").MongoClient;
 mongoClient.connect("mongodb://cosmodb:<PWD>%3D%3D@cosmodb.documents.azure.com:10255/?ssl=true", function (err, client) {
  client.close();
});

Node.js 2.2 driver connection string

var mongoClient = require("mongodb").MongoClient;
mongoClient.connect("mongodb://cosmodb:<PWD>==@cosmodb.documents.azure.com:10255/?ssl=true", function (err, db) {
  db.close();
});
0 голосов
/ 02 октября 2018

Это похоже на усталость, я тоже следовал тому же и смог подключиться к моей БД.Не могли бы вы проверить строку подключения cosmos connectiondb, mongo?Вы можете подключить это от других клиентов Монго

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