是否可以使用飞镖连接到本地MongoDB?

时间:2019-07-11 12:32:55

标签: mongodb flutter dart serversocket flutter-dependencies

每次我尝试连接到本地MongoDB时,都会不断收到此异常: SocketException:操作系统错误:连接被拒绝,errno = 111,地址= localhost,端口= 38748

有趣的事实:每次尝试后,异常中的端口都会增加2,并且始终是错误的(我什至在启动服务器时,端口接下来都会抛出异常)

MongoDB服务器正在运行-我NETWORK [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();
  }

}

我已经尝试用普通的飞镖代码运行此代码,并且可以运行。

3 个答案:

答案 0 :(得分:0)

在设备或仿真器上运行时,您的_host不会是本地主机-您需要指定运行MongoDB的计算机的实际IP地址或网络主机名。

答案 1 :(得分:0)

好,我现在解决了这个问题...

我必须获取被仿真设备的被仿真设备的Wireless LAN-Adapter IP,并使用--bind_ip启动mongodb。还必须在连接字符串中提供ip。

仍然要感谢MichaelM。

答案 2 :(得分:0)

更新mongo配置文件

 sudo nano  /etc/mongod.conf

 bindIp:127.0.0.1 ##### replace this line with below 

 bindIP:0.0.0.0  #### 

也进行更改后,检查MongoDB的状态

 sudo service mongod status

现在MongoDB可以很好地工作。