Можно ли подключиться к локальной MongoDB с помощью флаттера? - PullRequest
0 голосов
/ 11 июля 2019

Каждый раз, когда я пытаюсь подключиться к своей локальной MongoDB, я получаю следующее исключение: SocketException: ошибка ОС: соединение отклонено, errno = 111, адрес = localhost, порт = 38748

Интересный факт: порт в исключении увеличивается на два после каждой попытки и всегда неверен (я даже запустил сервер с портом, выбрасывающим исключение далее)

Сервер MongoDB работает - Я СЕТЬ [initandlisten] в ожидании соединения через порт 27017

Зависимость установлена ​​-

зависимости: mongo_dart: ^ 0.3.5 флаттер: SDK: флаттер

import 'package:mongo_dart/mongo_dart.dart' show Db, DbCollection;
class DBConnection {

  static DBConnection _instance;

  final String _host = "localhost";
  final String _port = "27017";
  final String _dbName = "debtservice";
  Db _db;

  static getInstance(){
    if(_instance == null) {
      _instance = DBConnection();
    }
    return _instance;
  }

  Future<Db> getConnection() async{
    if (_db == null){
      try {
        _db = Db(_getConnectionString());
        await _db.open();
      } catch(e){
        print(e);
      }
    }
    return _db;
  }

  _getConnectionString(){
    return "mongodb://$_host:$_port/$_dbName";
  }

  closeConnection() {
    _db.close();
  }

}

Я уже пытался запустить этот код простым дротиком, и он работает.

Ответы [ 2 ]

0 голосов
/ 15 июля 2019

Хорошо, я исправил проблему сейчас ...

Я должен был взять IP-адрес беспроводного LAN-адаптера эмулируемого устройства и запустить mongodb с помощью --bind_ip. IP-адрес также должен быть указан в строке подключения.

Все еще благодаря MichaelM.

0 голосов
/ 11 июля 2019

Ваш _host не будет localhost при работе на устройстве или в эмуляторе - вам нужно будет указать фактический IP-адрес или имя сетевого хоста компьютера, на котором работает MongoDB.

...