10bet网址
MySQL连接器/ J 8.0开发者指南
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 0.7 mb
PDF (A4)- 0.7 mb
HTML下载(TGZ)- 141.0 kb
HTML下载(邮政编码)- 160.5 kb


10.2模式验证

连接器/ J 8.0.21后来,当使用MySQL服务器8.0.19后来:可以配置模式验证集合,这样的文档集合要针对模式进行验证才可以插入或更新。这是通过指定一个JSON模式集合创建或修改;然后由服务器进行模式验证文档创建或更新,并返回一个错误如果文档没有验证指定的模式。在JSON模式验证MySQL的更多信息,看一下JSON模式验证功能。本节描述如何为一个配置模式验证集合与连接器/ J。

在创建配置模式验证集合,通过createCollection ()方法CreateCollectionOptions对象,这些字段:

  • 重用:设定的一个布尔值setReuseExisting方法。如果它是真正的,当集合内创建已经存在模式也包含它,连接器/ J返回成功(没有任何试图JSON模式适用于现有的集合);在同一案件中,连接器/ J如果参数设置为返回一个错误。如果重用没有设置,它是什么

  • 验证:一个验证设定的对象setValidation ()方法。一个验证对象将包含这些字段:

    • 水平:一个枚举类的ValidationLevel设定的,setLevel ()方法;它可以下列两个值之一:

      • 严格的:严格验证。试图插入或修改一个文档,违反了验证模式结果在服务器错误了。

      • :没有验证。模式验证是关闭的。

      如果水平没有设置,它被认为是MySQL服务器8.0.19和严格的8.0.20后来。

    • 模式:一个字符串表示JSON模式用于验证文档集合;设定的setSchema ()方法。

      如果模式但是水平将严格,集合根据默认模式进行验证吗{“类型”:“对象”}

这是一个例子,如何配置创建一个模式验证集合:

科尔= this.schema集合。createCollection (collName,新的CreateCollectionOptions () .setReuseExisting (false) .setValidation(新验证().setLevel (ValidationLevel.STRICT) .setSchema (“{\“id \”, \“http://json-schema.org/geo \”,“+”\“美元模式\”:\“http://json-schema.org/draft-06/schema \”,“+”\ \“描述”:\“地理坐标\”,“+”\“类型\”:\“对象\”,“+”\ \“属性”:{" + " \ "纬度\ ":{" + " \ "类型\ ":\“\”“+”},“+”\“经度\”:{" + " \ "类型\ ":\“\”“+”}" + "},“+”\“\”:[\“纬度\”,\“经度\]" + "}")));

设置字段都可以访问相应的getter方法。

修改的模式验证配置集合,可以使用modifyCollection ()方法,并传递给它ModifyCollectionOptions对象,该对象具有相同的字段CreateCollectionOptions对象除了重用字段,它并不存在ModifyCollectionOptions对象。为验证对象的一个ModifyCollectionOptions对象,用户可以设置它水平模式,或两者兼而有之。这是使用的一个例子modifyCollection ()改变模式验证配置:

模式。modifyCollection (collName,新的ModifyCollectionOptions () .setValidation(新验证().setLevel (ValidationLevel.OFF) .setSchema (“{\“id \”, \“http://json-schema.org/geo \”,“+”\“美元模式\”:\“http://json-schema.org/draft-06/schema \”,“+”\ \“描述”:\“新地理坐标\”,“+”\“类型\”:\“对象\”,“+”\ \“属性”:{" + " \ "纬度\ ":{" + " \ "类型\ ":\“\”“+”},“+”\“经度\”:{" + " \ "类型\ ":\“\”“+”}" + "},“+”\“\”:[\“纬度\”,\“经度\]" + "}")));

如果一个集合包含的文档不验证新的JSON模式通过提供ModifyCollectionOptions模式,服务器会拒绝修改的错误错误5180 (HY000)文档无效根据模式分配给集合

请注意

createCollection ()modifyCollection ()重载:它们可以被称为没有传递给他们吗CreateCollectionOptions或者是ModifyCollectionOptions分别在这种情况下,模式验证不会被应用到集合