更新文件
要更新文件 將更新的 JSON 內容和最新的 _rev 值傳送至 PUT 或 POST 請求。 到 https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID。 您也可以使用此 PUT 方法來建立文件、 在這種情況下,您不需要提供最新的 _rev 值。
回想一下,對於分區資料庫,$DOCUMENT_ID 是由分區關鍵部分和文件關鍵部分組成的。
如果您在嘗試更新現有文件時未能提供最新的 _rev,IBM Cloudant 會回應 409 錯誤。 此錯誤可防止您覆寫其他進程所變更的資料。 如果無法滿足寫入 法定人數,則會傳回
202 回應。
任何文件更新都可能導致衝突,尤其是當您複製更新的文件時。 如需避免和解決衝突的詳細資訊,請參閱 文件版本和 MVCC 指南。
您可以在程式碼範例中選擇要使用的程式語言,自訂本主題。
請參閱使用 HTTP 更新文件的範例:
POST /$DATABASE HTTP/1.1
請參閱更新文件的範例:
curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X POST "$SERVICE_URL/products" -H "Content-Type: application/json" --data '{ "_id": "small-appliances:1000042", "_rev": "1-967a00dff5e02add41819138abb3284d", "type": "product", "productid": "1000042", "brand": "Salter", "name": "Digital Kitchen Scales", "description": "Slim Colourful Design Electronic Cooking Appliance for Home / Kitchen, Weigh up to 5kg + Aquatronic for Liquids ml + fl. oz. 15Yr Guarantee - Green", "price: 14.99, "image": "assets/img/0gmsnghhew.jpg" }'
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.Document;
import com.ibm.cloud.cloudant.v1.model.DocumentResult;
import com.ibm.cloud.cloudant.v1.model.PostDocumentOptions;
Cloudant service = Cloudant.newInstance();
Document productsDocument = new Document();
productsDocument.setId("small-appliances:1000042");
productsDocument.setRev("1-967a00dff5e02add41819138abb3284d");
productsDocument.put("type", "product");
productsDocument.put("productid", "1000042");
productsDocument.put("brand", "Salter");
productsDocument.put("name", "Digital Kitchen Scales");
productsDocument.put("description", "Slim Colourful Design Electronic"
+ "Cooking Appliance for Home/Kitchen, Weigh up to 5kg + Aquatronic"
+ "for Liquids ml + fl. oz. 15Yr Guarantee - Green");
productsDocument.put("price", 14.99);
productsDocument.put("image", "assets/img/0gmsnghhew.jpg");
PostDocumentOptions documentOptions =
new PostDocumentOptions.Builder()
.db("products")
.document(productsDocument)
.build();
DocumentResult response =
service.postDocument(documentOptions).execute()
.getResult();
System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');
const service = CloudantV1.newInstance({});
const productsDoc = {
_id: 'small-appliances:1000042',
_rev: '1-967a00dff5e02add41819138abb3284d'
type: 'product',
productid: '1000042',
brand: 'Salter',
name: 'Digital Kitchen Scales',
description: 'Slim Colourful Design Electronic Cooking Appliance for Home / Kitchen, Weigh up to 5kg + Aquatronic for Liquids ml + fl. oz. 15Yr Guarantee - Green',
price: 14.99,
image: 'assets/img/0gmsnghhew.jpg'
};
service.postDocument({
db: 'products',
document: productsDoc
}).then(response => {
console.log(response.result);
});
from ibmcloudant.cloudant_v1 import Document, CloudantV1
service = CloudantV1.new_instance()
products_doc = Document(
id="small-appliances:1000042",
rev="1-967a00dff5e02add41819138abb3284d"
type="product",
productid="1000042",
brand="Salter",
name="Digital Kitchen Scales",
description="Slim Colourful Design Electronic Cooking Appliance for Home / Kitchen, Weigh up to 5kg + Aquatronic for Liquids ml + fl. oz. 15Yr Guarantee - Green",
price=14.99,
image="assets/img/0gmsnghhew.jpg")
response = service.post_document(db='products', document=products_doc).get_result()
print(response)
productsDoc := cloudantv1.Document{
ID: core.StringPtr("small-appliances:1000042"),
}
productsDoc.Rev = "1-967a00dff5e02add41819138abb3284d"
productsDoc.SetProperty("type", "product")
productsDoc.SetProperty("productid", "1000042")
productsDoc.SetProperty("brand", "Salter")
productsDoc.SetProperty("name", "Digital Kitchen Scales")
productsDoc.SetProperty("description", "Slim Colourful Design Electronic Cooking Appliance for Home / Kitchen, Weigh up to 5kg + Aquatronic for Liquids ml + fl. oz. 15Yr Guarantee - Green")
productsDoc.SetProperty("price", 14.99)
productsDoc.SetProperty("image", "assets/img/0gmsnghhew.jpg")
postDocumentOptions := service.NewPostDocumentOptions(
"products",
)
postDocumentOptions.SetDocument(&productsDoc)
documentResult, response, err := service.PostDocument(postDocumentOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(documentResult, "", " ")
fmt.Println(string(b))
前面的 Go 範例需要下列匯入區塊:
import (
"encoding/json"
"fmt"
"github.com/IBM/cloudant-go-sdk/cloudantv1"
"github.com/IBM/go-sdk-core/v5/core"
)
所有 Go 的範例都需要初始化 service 物件。 如需詳細資訊,請參閱 API 文件的 驗證部分 範例。
請參閱包含更新文件的 JSON 資料範例:
{
"id": "exampleid",
"ok": true,
"rev": "2-056f5f44046ecafc08a2bc2b9c229e20"
}
回想一下,對於分區資料庫,$DOCUMENT_ID 是由分區關鍵部分和文件關鍵部分組成的。
回應包含 ID 和文件的新修訂版、 或錯誤訊息(如果更新失敗)。
請參閱更新成功後的回應範例:
{
"id": "exampleid",
"ok": true,
"rev": "2-056f5f44046ecafc08a2bc2b9c229e20"
}