Laravel Mongodb - 无法从集合中获取数据



我有一个使用Vue+Laravel的应用程序,我使用的是mysql数据库。现在,我还需要使用mongodb数据库。

所以,这是我的实时mongodb数据库表(项目(和集合(product_1、product_2等(

像这样:

https://prnt.sc/D08akhBur6z4

现在,我想得到所有的收藏品。为此,我创建了一个名为Import的模型

Import.php

<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use JenssegersMongodbEloquentModel;
class Import extends Model
{
protected $connection = 'mongodb';
protected $collection = 'projects';
}

并创建了一个名为ImportController.php.的控制器

ImportController.php

<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;
use AppModelsImport;
class ImportController extends Controller
{   
public function show_import () {
$all_import = Import::all();
return response()->json( $all_import, 200);    
}
}

.env文件

MONGO_DB_HOST=107.200.220.71
MONGO_DB_PORT=57019
MONGO_DB_DATABASE=projects
MONGO_DB_USERNAME=marketplus_pr
MONGO_DB_PASSWORD="my-password"

database.php

'mongodb'   =>  [
'driver'    =>  'mongodb',
'dsn' => 'mongodb+srv://marketplus_pr:my-password@107.200.220.71/projects?retryWrites=true&w=majority',
'database'  =>  'projects'
],

现在使用这个api路由调用:

http://localhost:3000/api/projects/import/show-进口/3343-3-3-3-3

我收到这样的消息:

{"success":false}

但它应该给我所有的收藏品,对吧?

你能告诉我我在这里做错了什么吗?

您的请求正被另一个路由声明/控制器截获。(聊天参考(此外,收藏名称错误。

您应该在api.php文件中进行一些更改:

移动此路线声明:

Route::get('projects/import/show-import/{token}', [AppHttpControllersImportController::class, 'show_import'])->name('show_import');

之后:

Route::group([], function ($router) {

使其成为:

Route::group([], function ($router) {
Route::get('projects/import/show-import/{token}', 
[AppHttpControllersImportController::class, 'show_import'])- 
>name('show_import');
...
}

此外,{token}URL参数没有意义,因此您应该删除它。

并且,在Import.php模型文件中将集合名称更改为products_1

class Import extends Model
{
protected $connection = 'mongodb';
protected $collection = 'products_1'; // this should be collection name and not the database name: products_1, products_2, etc.
...
}

默认情况下,mongodb在端口27017上运行,但查看您的连接字符串,您不会将该端口发送到连接。如果你确定你在那个端口上运行mongodb,你的连接字符串需要是:

mongodb+srv://marketplus_pr:my-password@107.200.220.71:57019?retryWrites=true&w=majority

另一方面,如果您在运行mongodb实例时没有设置端口,则为27017,因此连接字符串为:

mongodb+srv://marketplus_pr:my-password@107.200.220.71:27017?retryWrites=true&w=majority

最新更新