У меня есть запрос curl к облачной базе данных, чтобы добавить новый документ. Однако всякий раз, когда я запускаю его, он жалуется, что база данных уже существует, тогда мне приходится переименовывать БД в URL. Это, однако, только создает новую пустую базу данных. Что не так с моим запросом curl из следующего?
Это код, который я использую:
credentials = base64_encode($login.':'.$password);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => array(
'Authorization: Basic '.$credentials,
"content-type: application/json"),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
if($this->debug === 1) {
echo $err;
var_dump($info);
}
return false;
} else {
return $response;
}
И это код, который использует его:
$journey_data = array(
"name" => "name",
"TEST" => "TESTIN TED");
$this->cloudent_controller = modules::load('cloudent_integration/cloudent_integration');
$url = "https://test.cloudant.com/fubar";
$result = $this->cloudent_controller->createDocument($url, json_encode($journey_data));
var_dump($result);
die;
Да, я использую воспламенитель кода и шаблон hmvc, но это не важные детали, так как я получаю ответ.
Отклик :
string(95) "{"error":"file_exists","reason":"The database could not be created, the file already exists."} "
Чтобы создать новый документ на сервере couchDB, вам нужно отправить запрос PUT или POST на URL-адрес, где вы хотите сохранить документ, это означает, что вам нужно указать базу данных и имя документа в URL-адресе:
https://test.cloudant.com/fubar/doc_id
Если вы отправляете запрос PUT или POST напрямую в базу данных, как я думаю, вы просите couchDB создать эту базу данных.
Других решений пока нет …