mongodb - 无法通过学说连接mongodb
问题描述
我正在和几个朋友一起做一个上学的项目。现在我试图用已经存在的 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'));
}
同样在数据库中,我想连接到有权写入“用户”数据库的管理员用户(我想在那里保存我的新用户)。
尝试发送请求时出错:
request.CRITICAL:未捕获的 PHP 异常 MongoConnectionException:“找不到合适的服务器(serverSelectionTryOnce
设置):[无法解析 'mongodb']”在 /var/www/html/vendor/alcaeus/mongo-php-adapter/lib/Alcaeus/MongoDbAdapter /ExceptionConverter.php 第 79 行 {"exception":"[object] (MongoConnectionException(code: 13053): 找不到合适的服务器 ( serverSelectionTryOnce
set): [Failed to resolve 'mongodb'] at /var/www/html/vendor/alcaeus /mongo-php-adapter/lib/Alcaeus/MongoDbAdapter/ExceptionConverter.php:79,MongoDB\Driver\Exception\ConnectionTimeoutException(代码:13053):找不到合适的服务器(serverSelectionTryOnce
设置):[无法解析“mongodb”]在/ var/www/html/vendor/mongodb/mongodb/src/Collection.php:867)"} []
解决方案
问题确实出在我的 docker compose 文件中,我没有将两个 docker 都连接到网络,感谢@BrucieAlpha 的帮助
推荐阅读
- apollo-federation - 阿波罗:联合突变
- python - 如何使用 OpenCV 将 PyBullet 模拟坐标投影到渲染的帧像素坐标?
- c# - C#:如何找到函数内数组的总和?
- flutter - 使用 colorScheme 与强调色
- python-3.x - libvirt 错误:内部错误:未定义的硬件架构
- arrays - 如何将 Nnumpy 数组转换为 Python 中的字典?
- python - 为什么这个循环不能正常工作?蟒蛇,硒
- postgresql - 如果我连接两个十六进制数字,结果是否保证为十六进制?
- c# - Process.Start() win32 异常找不到文件 C# Windows 窗体
- bash - 在 UNIX/Bash 脚本中按字母顺序对用户输入进行排序