Hướng dẫn database connection mongodb not configured - kết nối cơ sở dữ liệu mongodb không được định cấu hình

Tôi đang có kế hoạch sử dụng MongoDB cùng với dự án Laravel của tôi. Tôi đang sử dụng tiện ích mở rộng JenseGer/MongoDB cho nó. Tôi đã cấu hình mọi thứ. Tôi đang nhận được một lỗi khi nói MongoDB không được cấu hình. Đây là cách tệp cơ sở dữ liệu của tôi.php trông giống như:

'connections' => [
        # Our primary database connection
        'mongodb' => [
            'driver'    => 'mongodb',
            'host'      => env('DB_HOST'),
            'database'  => env('DB_DATABASE'),
            'username'  => env('DB_USERNAME'),
            'password'  => env('DB_PASSWORD'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,

        ],

Bạn đã đặt cấu hình dưới khóa

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
4 trong
composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
5

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),

Nếu vậy, hãy thử:

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
6 nó sẽ trả về
composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
7. Lưu ý: Đảm bảo
composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
8 khớp với khóa cấu hình kết nối.

Lúc đầu tôi có vấn đề này, bởi vì tôi có một lỗi đánh máy trong thuộc tính

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
9 của mô hình.

Cấu hình của tôi trong cơ sở dữ liệu.php 'MongoDB' => ['Driver' => 'MongoDB', 'host' => env ('db_host', 'localhost'), 'port' => env ('db_port', 27017) . > ['Cơ sở dữ liệu' => 'Quản trị viên' // Đặt cơ sở dữ liệu xác thực theo yêu cầu của Mongo 3]],
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'name'=>'mongodb',
'password' => env('DB_PASSWORD'),
'options' => [
'database' => 'admin' // sets the authentication database required by mongo 3
]
],

## Cấu hình của tôi trong .ENV là

Db_connection = MongoDB db_host = 127.0.0.1 db_port = 27017 db_database = laravel db_username = root db_password = divesh
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=divesh

Tôi đang thử mã bên dưới trong tệp tuyến của mình Web.php

lấy(); var_dump ($ các mục nhập); **}); và tôi đang gặp lỗi ** (1/1) Cơ sở dữ liệu không hợp lệ [MongoDB] không được cấu hình. ** Vui lòng giúp tôi với một giải pháp tôi đang sử dụng Php 7.0, Laravel 5.4 và MongoDB 3.2.16

Tôi có thể sử dụng MongoDB với Laravel không?

Đúng! Trên thực tế, MongoDB là một lựa chọn tuyệt vời cho các dự án Laravel. Khi chúng tôi bắt đầu với sự phát triển của Laravel bằng MongoDB, chúng tôi sẽ làm việc thông qua một ví dụ về cách xây dựng một ứng dụng blog.

Các lệnh cài đặt được cung cấp ở đây đã được thử nghiệm trên các macOS, nhưng bạn không nên gặp sự cố nếu bạn làm việc trong dòng lệnh Windows hoặc trên máy Linux. Bạn sẽ cần truy cập vào một thể hiện MongoDB đã chạy.

Thiết lập môi trường phát triển Laravel địa phương

(Vui lòng mã theo hoặc tải xuống mã đầy đủ từ repo GitHub này.)

Điều kiện tiên quyết

Vì Laravel là một khung PHP, bạn sẽ cần cài đặt PHP trên máy tính của mình. Quy trình có thể thay đổi tùy thuộc vào hệ điều hành của bạn. Để biết thêm chi tiết về bước này, vui lòng xem tài liệu cài đặt chính thức. Đối với hướng dẫn của chúng tôi, bạn sẽ cần cài đặt Php phiên bản 7.4 trên máy tính của bạn.

Bước tiếp theo là cài đặt Trình soạn thảo. Nhà soạn nhạc là một thư viện và trình quản lý phụ thuộc cho PHP, cho phép bạn thêm các thư viện mà bạn có thể muốn sử dụng trong dự án của mình.

Cài đặt dự án Laravel

Khi bạn đã cài đặt PHP và Composer, bạn có thể cài đặt Laravel.

Từ cửa sổ đầu cuối, nhập lệnh sau:

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin

Để bắt đầu một dự án Laravel, hãy chạy lệnh sau. Đối với dự án của chúng tôi, chúng tôi sẽ sử dụng

laravel new myapp
0 làm tên của ứng dụng của chúng tôi:

laravel new myapp

Điều này tạo ra một thư mục gọi là

laravel new myapp
0, với cấu trúc dự án Laravel ban đầu bên trong nó.

Nếu bạn chạy lệnh sau từ thư mục

laravel new myapp
0, bạn sẽ thấy một ứng dụng web đang chạy với trang Laravel ban đầu tại http: // localhost: 8000:

cd myapp
php artisan serve

Cài đặt gói Laravel MongoDB

Trước khi chúng tôi có thể cài đặt các thư viện MongoDB cho Laravel, chúng tôi cần cài đặt tiện ích mở rộng PHP cho MongoDB. Chạy lệnh sau:

sudo pecl install mongodb

Bạn cũng sẽ cần đảm bảo rằng tiện ích mở rộng MongoDB được bật trong tệp Php.ini của bạn. Vị trí của tệp Php.ini của bạn sẽ thay đổi tùy thuộc vào hệ điều hành của bạn. Thêm dòng sau vào tệp php.ini của bạn:

extension="mongodb.so"

Cuối cùng, chạy lệnh sau từ thư mục dự án Laravel của bạn để thêm gói MongoDB cho Laravel:

composer require jenssegers/mongodb

Định cấu hình dự án Laravel của bạn để sử dụng MongoDB

Định cấu hình cơ sở dữ liệu MongoDB

Để Laravel giao tiếp với cơ sở dữ liệu MongoDB của bạn, bạn sẽ cần thêm thông tin kết nối cơ sở dữ liệu của mình vào tệp Config \ Database.php trong đối tượng Kết nối của bạn trong dự án Laravel của bạn như trong ví dụ này:config\database.php file under the “connections” object in your Laravel project as shown in this example:

'connections' => [
  'mongodb' => [
        'driver' => 'mongodb',
        'dsn' => env('DB_URI', 'mongodb+srv://username:password@/myappdb?retryWrites=true&w=majority'),
        'database' => 'myappdb',
],

Đảm bảo bao gồm thông tin xác thực chính xác.

Đặt tên kết nối cơ sở dữ liệu mặc định trong cấu hình \ cơ sở dữ liệu.php:config\database.php:

   /*
    |--------------------------------------------------------------------------
| Default Database Connection Name
    |--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
    */

'default' => env('DB_CONNECTION', 'mongodb'),

Xác định các nhà cung cấp

Nếu dự án Laravel của bạn không tự động tải phụ thuộc, bạn cũng có thể cần thêm phần sau vào phần nhà cung cấp trong tệp app.php của bạn:app.php file:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
0

Ví dụ về Laravel MongoDB crud

Thư viện hùng biện của Laravel cho phép chúng tôi ánh xạ và thực hiện các hoạt động CRUD cơ sở dữ liệu (tạo, đọc, cập nhật, xóa) trực tiếp khỏi các mô hình Laravel.

Giả sử rằng chúng ta có một bộ sưu tập MongoDB có tên là Bài viết, một tài liệu ví dụ trong bộ sưu tập "Bài đăng" có thể trông giống như thế này:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
1

Nếu bạn đang sử dụng MongoDB Atlas, bạn có thể sử dụng bảng điều khiển Atlas để chèn bản ghi tài liệu này trực tiếp vào cơ sở dữ liệu có tên là MyAPPDB.

Tạo một mô hình, bộ điều khiển, tuyến đường và tệp xem

Bước đầu tiên của chúng tôi sẽ là tạo một mô hình Laravel để đại diện cho các bài đăng trên blog. Từ thư mục dự án, chạy lệnh sau:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
2

Điều này sẽ tạo một ứng dụng/model/post.php và tệp app/http/bộ điều khiển/postcontroll.php.

Theo mặc định, Artisan tạo ra các mô hình mở rộng mô hình Illuminate \ Databs \ Eloquent \.

Tuy nhiên, đối với MongoDB, chúng tôi muốn mở rộng mô hình hùng biện MongoDB, vì vậy chúng tôi muốn chỉnh sửa ứng dụng/model/post.php. Mô hình bài của chúng tôi nên trông như thế này:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
3

Lưu ý rằng khi lưu trữ dữ liệu mới, Laravel sẽ tự động tạo bộ sưu tập trong cơ sở dữ liệu MongoDB cho bạn. Theo mặc định, tên thu thập là số nhiều của mô hình được sử dụng (bài đăng trên trường hợp này). Tuy nhiên, bạn có thể ghi đè lên đó bằng cách đặt thuộc tính bộ sưu tập trên mô hình như thế này:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
4

Nếu bạn đang sử dụng nhiều cơ sở dữ liệu, bạn cũng muốn chỉ định tên kết nối cơ sở dữ liệu trên mô hình như được chỉ ra ở trên.

Tiếp theo, chúng tôi có thể sử dụng mô hình bài đăng của chúng tôi để đọc và hiển thị các bài đăng trên blog của chúng tôi từ cơ sở dữ liệu MongoDB. Trước tiên, hãy để Lôi tạo một chức năng trong PostControll để nhận bài đăng trên blog bằng Slug:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
5

Trong ví dụ trên, chúng tôi chỉ đang truy xuất bài viết bằng tên Slug của nó. Các mô hình hùng hồn MongoDB hỗ trợ tất cả các phương pháp truy vấn hùng hồn tiêu chuẩn, nhưng chúng cũng hỗ trợ các truy vấn bổ sung dành riêng cho chính MongoDB. Để biết thêm chi tiết, xem https://github.com/jenssegers/laravel-mongodb.

Tiếp theo, hãy để thêm dòng sau vào tệp ROUTES \ Web.php để tạo tuyến đường cho các bài đăng trên blog:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
6
'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
7

Hiển thị dữ liệu bằng chế độ xem Laravel

Cuối cùng, hãy để thêm một chế độ xem để định dạng và tạo kiểu cho dữ liệu bài đăng trên blog để hiển thị. Tên chế độ xem cần phù hợp với chế độ xem mà chúng tôi sử dụng trong bộ điều khiển của chúng tôi. Chúng ta có thể làm điều này bằng cách tạo tệp myApp/resource/lượt xem/post.blade.php với nội dung sau:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
8

Bây giờ chúng ta có thể xem bài đăng của chúng tôi tại http: // localhost: 8000/post/post-post đầu tiên.

Lưu dữ liệu vào cơ sở dữ liệu MongoDB

Bây giờ, hãy để nói rằng bạn cũng muốn tạo một API mà bạn có thể sử dụng để tạo các bài đăng trên blog trong ứng dụng của mình. Đầu tiên, chúng tôi muốn thêm một phương thức trong PostControll của chúng tôi để lưu trữ một bài đăng:

'mongodb' => array(
    'driver'   => 'mongodb',
    'host'     => 'localhost',
    'port'     => 27017,
    'username' => 'username',
    'password' => 'password',
    'database' => 'database',
    'options' => array(
        'db' => 'admin' // sets the authentication database required by mongo 3
    )
),
9

Tiếp theo, chúng tôi muốn định cấu hình tuyến tài nguyên cho các bài đăng trong ứng dụng \ Route \ api.php:

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
0

Và cuối cùng, chúng tôi có thể kiểm tra API của mình bằng cách thực hiện yêu cầu POST đến http: // localhost: 8000/API/bài đăng. Ở đây, một ví dụ sử dụng ứng dụng Postman:

Tài liệu

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
1

Hướng dẫn database connection mongodb not configured - kết nối cơ sở dữ liệu mongodb không được định cấu hình

Chúng tôi có thể kiểm tra cơ sở dữ liệu MongoDB và xem bài đăng trên blog đã được lưu trữ:

Hướng dẫn database connection mongodb not configured - kết nối cơ sở dữ liệu mongodb không được định cấu hình

Chúng ta cũng có thể xem bài đăng mới bằng cách truy cập http: // localhost: 8000/post/post-post.

Xóa dữ liệu khỏi cơ sở dữ liệu

Như bạn có thể nhận thấy, nếu một khóa chính không được chỉ định trên mô hình, thuộc tính _ID được sử dụng làm khóa chính cho mỗi bản ghi.

Để xóa bản ghi, chúng tôi có thể sử dụng ID đó để tìm và xóa bản ghi. Vì chúng tôi đã xác định một lộ trình tài nguyên cho các bài đăng, chúng tôi chỉ cần thêm một phương thức phá hủy () vào PostControll:

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
2

Sau đó, chúng tôi có thể đưa ra một yêu cầu xóa cho điểm cuối API http: // localhost: 8000/api/post/để xóa một bài đăng.

Cập nhật dữ liệu trong cơ sở dữ liệu

Chúng tôi đã tạo API để tạo và xóa các bài đăng trên blog. Chúng tôi cũng có thể muốn tạo một API để cập nhật các bài đăng trên blog. Điều này rất giống với các ví dụ trước. Chúng ta chỉ cần thêm một phương thức vào PostControll:

composer global require "laravel/installer"
export PATH=$PATH:$HOME/.composer/vendor/bin
3

Bây giờ, chúng tôi có thể đưa ra yêu cầu đặt cho điểm cuối API http: // localhost: 8000/api/post/với nội dung được cập nhật của bài đăng trên blog.

Hướng dẫn database connection mongodb not configured - kết nối cơ sở dữ liệu mongodb không được định cấu hình

Tại sao MongoDB của tôi không kết nối?

Nếu bạn đã tạo người dùng và gặp khó khăn trong việc xác thực, hãy thử những điều sau: Kiểm tra xem bạn đang sử dụng đúng tên người dùng và mật khẩu cho người dùng cơ sở dữ liệu của mình và bạn đang kết nối với việc triển khai cơ sở dữ liệu chính xác. Kiểm tra xem bạn có chỉ định cơ sở dữ liệu AuthSource chính xác trong chuỗi kết nối của bạn không.Check that you are using the correct username and password for your database user, and that you are connecting to the correct database deployment. Check that you are specifying the correct authSource database in your connection string.

Cơ sở dữ liệu cấu hình MongoDB là gì?

Bắt đầu từ MongoDB 3.6, cơ sở dữ liệu cấu hình chứa các bộ sưu tập nội bộ để hỗ trợ các phiên phù hợp về mặt nhân quả cho độc lập, bộ bản sao, và các cụm được chia nhỏ và các giao dịch và giao dịch có thể thử lại cho các bộ sao chép và cụm chia cắt.

Chuỗi kết nối MongoDB ở đâu?

Để có được chuỗi kết nối cho một cụm Atlas:..
Điều hướng đến chế độ xem cụm Atlas của bạn ..
Nhấp vào Kết nối cho cụm mong muốn của bạn ..
Nhấp vào Kết nối với Compass MongoDB ..
Sao chép chuỗi kết nối được cung cấp ..

Làm cách nào để kết nối với MongoDB?

Làm thế nào để kết nối với MongoDB..
Tạo cơ sở dữ liệu trên MongoDB.Kết nối với vỏ MongoDB.Tạo cơ sở dữ liệu "TestDB".Tạo bộ sưu tập "người dùng" và chèn nó vào "TestDB" ..
Thiết lập người dùng.Kết nối với quản trị viên DB.Tạo quản trị viên người dùng.....
Tạo kết nối với MongoDB trên CPD.Đặt thông tin cần thiết ..