ПОЛУЧЕНИЕ данных из Couchdb с помощью Guzzle в php

#php #couchdb #guzzle #couchdb-2.0

#php #couchdb #guzzle #couchdb-2.0

Вопрос:

Я получаю данные из Couchdb в PHP с помощью библиотеки Guzzle. Теперь я извлекаю данные в формате POST следующим образом:

введите описание изображения здесь

Но мне нужен такой ответ:

 {
    "status": 200,
    "message": "Success",
    "device_info": {
                "_id": "00ab897bcb0c26a706afc959d35f6262",
                "_rev": "2-4bc737bdd29bb2ee386b967fc7f5aec9",
                "parent_id": "PV-409",
                "child_device_id": "2525252525",
                "app_name": "Power Clean - Antivirus amp; Phone Cleaner App",
                "package_name": "com.lionmobi.powerclean",
                "app_icon": "https://lh3.googleusercontent.com/uaC_9MLfMwUy6pOyqntqywd4HyniSSxmTfsiJkF2jQs9ihMyNLvsCuiOqrNxNYFq5ko=s3840",
                "last_app_used_time": "12:40:04",
                "last_app_used_date": "2019-03-12"

        "bookmark": "g1AAAABweJzLYWBgYMpgSmHgKy5JLCrJTq2MT8lPzkzJBYorGBgkJllYmiclJxkkG5klmhuYJaYlW5paphibppkZmRmB9HHA9BGlIwsAq0kecQ",
        "warning": "no matching index found, create an index to optimize query time"
    } }
  

Я удаляю только «docs»: [{}] -> Кто-нибудь знает, что я удаляю это?

проверьте мой код:

 $response = $client->post(
                        "/child_activity_stat/_find",
                        [GuzzleHttpRequestOptions::JSON => ['selector' => ['parent_id' => ['$eq' => $userid], 'child_device_id' => ['$eq' => $deviceid]],]]
                    );

                    if ($response->getStatusCode() == 200) {

                        $result = json_decode($response->getBody());
                        $r   = $response->getBody();



                        json_output(200, array(

                            'status'      => 200,
                            'message'     => 'Success',
                            "device_info" =>   $result
                        ));

                    }
  

Комментарии:

1. Зачем вам это нужно таким образом? Вся информация уже там. Кроме того, ваш необходимый ответ ошибочен

2. Потому что мне нужны данные в этом формате, но couchdb возвращает данные в «docs»: [{}]

3. если какая-либо информация уже есть, пожалуйста, предоставьте мне ссылку? я проверяю это, спасибо

Ответ №1:

Вам просто нужно изменить свою структуру данных.

ПРИМЕЧАНИЕ: Возможно, вам следует добавить ограничение в 1, если вы хотите получить только один документ. Вам также нужно будет проверить, что результат [‘docs’] не пуст.

Пример:

 <?php
$response = $client->post(
    "/child_activity_stat/_find",
    [GuzzleHttp RequestOptions::JSON => ['selector' => ['parent_id' => ['$eq' => $userid], 'child_device_id' => ['$eq' => $deviceid]], ]]
);

if ($response->getStatusCode() == 200) {

    // Parse as array
    $result = json_decode($response->getBody(),true);

    // Get the first document.
    $firstDoc = $result['docs'][0];

    // Remove docs from the response
    unset($result['docs']);

    //Merge sanitized $result with $deviceInfo
    $deviceInfo = array_merge_recursive($firstDoc,$result);   


    json_output(200, array(
        'status' => 200,
        'message' => 'Success',
        "device_info" => $deviceInfo
    ));

}
  

Ответ №2:

В couchdb запрос PUT используется для редактирования или добавления данных и УДАЛЕНИЯ данных

 $client = new GuzzleHttpClient();
// Put request for edit
$client->put('http://your_url', [
  'body'            => [
     'parent_id' => ['$eq' => $userid], 
     'child_device_id' => ['$eq' => $deviceid]
  ],
  'allow_redirects' => false,
  'timeout'         => 5
]);
// To delete
$client->delete('htt://my-url', [
   'body' = [
      data
   ]
]);
  

Комментарии:

1. Но я получаю данные, используя Guzzle, а не Curl

2. @muhammadabubakar теперь вы можете увидеть это с помощью guzzle

3. спасибо за ответ. я получаю данные в «docs»: [{}] но мне не нужен этот формат, пожалуйста, проверьте вопрос еще раз

4. @muhammadabubakar я думаю, что это ошибка конфигурации, а не кода. Пожалуйста, проверьте всю вашу конфигурацию.