4.6 JSON Schema 驗證

可以將集合設定為根據 JSON Schema 驗證文件。這使您能夠要求文件在插入或更新至集合之前,必須具有特定的結構。您可以使用 https://json-schema.dev.org.tw 中描述的方式指定 JSON Schema。Schema 驗證是由伺服器執行,如果集合中的文件未根據指定的 JSON Schema 驗證,伺服器會傳回錯誤訊息。如需 MySQL 中 JSON Schema 驗證的詳細資訊,請參閱 JSON Schema 驗證函式。本節說明如何設定集合以根據 JSON Schema 驗證文件。

若要啟用或修改 JSON Schema 驗證,請向集合提供類似以下的 validation JSON 物件

{
    validation: {
      level: "off|strict",
      schema: "json-schema"
    }
}

在此,validation 是 JSON 物件,其中包含您可以用來設定 JSON Schema 驗證的索引鍵。第一個索引鍵是 level,其值可以是 strictoff。第二個索引鍵 schema 是一個 JSON Schema,定義於 https://json-schema.dev.org.tw。如果將 level 索引鍵設定為 strict,文件會在新增至集合時根據 json-schema 進行驗證,或者,如果它們已經在集合中,則在它們透過某些操作更新時進行驗證。如果文件未通過驗證,伺服器會產生錯誤,且操作會失敗。如果將 level 索引鍵設定為 off,文件不會根據 json-schema 進行驗證。

建立已驗證的集合

若要在您建立新集合時啟用 JSON Schema 驗證,請提供如上所述的 validation JSON 物件。例如,若要建立一個集合,該集合保留經度和緯度值,並要求將這些值驗證為數字

var coll = schema.createCollection("longlang", {
  validation: {
    level: "strict",
    schema:   {
      "id": "https://json-schema.dev.org.tw/geo",
      "$schema": "https://json-schema.dev.org.tw/draft-06/schema#",
      "description": "A geographical coordinate",
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        }
      },
      "required": ["latitude", "longitude"]
    }
  }
})

修改集合驗證

您可以修改集合以控制文件的 JSON Schema 驗證。例如,您可以啟用或停用驗證,或變更用於驗證文件的 JSON Schema。

為了修改集合的 JSON Schema 驗證,請在呼叫 Collection.modify() 方法時,提供 validation JSON 物件。例如,若要修改集合以停用 JSON Schema 驗證,validation 物件會是

{ 
   validation: {
       "level": "off"
   }
}

當修改 JSON Schema 驗證時,您可以單獨提供 level 選項,僅變更 Schema 驗證的層級。例如,傳遞上方顯示的 JSON 物件以停用 JSON Schema 驗證。這不會變更先前指定的 JSON Schema,也不會從集合中移除 JSON Schema。或者,您也可以僅傳遞新的 JSON Schema 物件來修改 Schema。