无法通过学说连接 mongodb
Cannot connect with mongodb through doctrine
我正在和几个朋友一起去学校做一个项目。现在我正在尝试使用已经存在的 mongodb 设置我们的 symfony 项目,但是找不到它。
我正在尝试遵循官方指南,了解如何使用捆绑包 DoctrineMongoDBBundle 从 www.symfony.com 设置该组合。
我的主义:
doctrine_mongodb:
auto_generate_proxy_classes: '%kernel.debug%'
auto_generate_hydrator_classes: '%kernel.debug%'
connections:
default:
server: "%mongodb_server%"
options:
username: "%mongodb_username%"
password: "%mongodb_password%"
authSource: "%mongodb_db%"
default_database: "%mongodb_auth_db%"
document_managers:
default:
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Document'
prefix: App\Document\
alias: App
取自 services.yaml
的值
parameters:
locale: 'en'
mongodb_server: "mongodb://mongodb:27017"
mongodb_username: "admin"
mongodb_password: "my_password"
mongodb_auth_db: "admin"
mongodb_db: "users"
我们在 docker 环境下工作,所以我的 symfony 项目和数据库在两个不同的 docker 上(我需要通过它们连接,所以 localhost 不工作)。
作为我在控制器上为用户工作的第一个功能,我试图让注册用户工作,这是我当前使用的控制器(仍然有模拟数据):
/**
* @Route("/api/security/register", name="register")
* @Method("GET")
* @return JsonResponse
*/
public function registerAction(): JsonResponse
{
$user = new User();
$user->setUsername('test');
$user->setEmail('test@test.test');
$user->setPlainPassword('testtest');
$dm = $this->get('doctrine_mongodb')->getManager();
$dm->persist($user);
$dm->flush();
return new JsonResponse(array('Status' => 'OK'));
}
同样在数据库中,我想连接到有权写入 "users" 数据库的管理员用户(我想保存我的新用户)。
我尝试发送请求时出错:
request.CRITICAL:未捕获 PHP 异常 MongoConnectionException:"No suitable servers found (serverSelectionTryOnce
set): [Failed to resolve 'mongodb']" 在 /var/www/html/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter。php 第 79 行 {"exception":“[object] (MongoConnectionException(代码:13053):找不到合适的服务器(serverSelectionTryOnce
设置):[无法在 /var/www/html/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter 解析 'mongodb']。php:79,MongoDB\Driver\Exception\ConnectionTimeoutException(代码:13053):找不到合适的服务器(serverSelectionTryOnce
设置):[无法在 /var/www/html/vendor/mongodb/mongodb/src/Collection 解析 'mongodb']。php:867)"} []
问题确实在我的 docker 撰写文件中,我没有将两个 docker 都连接到网络,感谢@BrucieAlpha
的帮助
我正在和几个朋友一起去学校做一个项目。现在我正在尝试使用已经存在的 mongodb 设置我们的 symfony 项目,但是找不到它。
我正在尝试遵循官方指南,了解如何使用捆绑包 DoctrineMongoDBBundle 从 www.symfony.com 设置该组合。
我的主义:
doctrine_mongodb:
auto_generate_proxy_classes: '%kernel.debug%'
auto_generate_hydrator_classes: '%kernel.debug%'
connections:
default:
server: "%mongodb_server%"
options:
username: "%mongodb_username%"
password: "%mongodb_password%"
authSource: "%mongodb_db%"
default_database: "%mongodb_auth_db%"
document_managers:
default:
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Document'
prefix: App\Document\
alias: App
取自 services.yaml
的值parameters:
locale: 'en'
mongodb_server: "mongodb://mongodb:27017"
mongodb_username: "admin"
mongodb_password: "my_password"
mongodb_auth_db: "admin"
mongodb_db: "users"
我们在 docker 环境下工作,所以我的 symfony 项目和数据库在两个不同的 docker 上(我需要通过它们连接,所以 localhost 不工作)。
作为我在控制器上为用户工作的第一个功能,我试图让注册用户工作,这是我当前使用的控制器(仍然有模拟数据):
/**
* @Route("/api/security/register", name="register")
* @Method("GET")
* @return JsonResponse
*/
public function registerAction(): JsonResponse
{
$user = new User();
$user->setUsername('test');
$user->setEmail('test@test.test');
$user->setPlainPassword('testtest');
$dm = $this->get('doctrine_mongodb')->getManager();
$dm->persist($user);
$dm->flush();
return new JsonResponse(array('Status' => 'OK'));
}
同样在数据库中,我想连接到有权写入 "users" 数据库的管理员用户(我想保存我的新用户)。
我尝试发送请求时出错:
request.CRITICAL:未捕获 PHP 异常 MongoConnectionException:"No suitable servers found (serverSelectionTryOnce
set): [Failed to resolve 'mongodb']" 在 /var/www/html/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter。php 第 79 行 {"exception":“[object] (MongoConnectionException(代码:13053):找不到合适的服务器(serverSelectionTryOnce
设置):[无法在 /var/www/html/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter 解析 'mongodb']。php:79,MongoDB\Driver\Exception\ConnectionTimeoutException(代码:13053):找不到合适的服务器(serverSelectionTryOnce
设置):[无法在 /var/www/html/vendor/mongodb/mongodb/src/Collection 解析 'mongodb']。php:867)"} []
问题确实在我的 docker 撰写文件中,我没有将两个 docker 都连接到网络,感谢@BrucieAlpha
的帮助