uni-app DB Schema required字段校验完全无效

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app DB Schema required字段校验完全无效

操作步骤:

都不用案例了,直接复制https://doc.dcloud.net.cn/uniCloud/schema.html#属性列表
这个页面的resume.schema.json案例,address在定义了required的情况下完全不生效

预期结果:

使用案例代码在不填写address的city时应该无法提交

实际结果:

完全没有任何卵用,填不填写address字段的任何值都没有任何影响

bug描述:

都不用案例了,直接复制https://doc.dcloud.net.cn/uniCloud/schema.html#属性列表
这个页面的resume.schema.json案例,address在定义了required的情况下完全不生效


1 回复

uni-app 中使用 DB Schema 时,如果 required 字段校验无效,可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:


1. 确保 DB Schema 配置正确

  • 检查 DB Schemarequired 字段的配置是否正确。例如:
    {
      "bsonType": "object",
      "required": ["name", "age"],
      "properties": {
        "name": {
          "bsonType": "string"
        },
        "age": {
          "bsonType": "int"
        }
      }
    }
  • 确保 required 字段是一个数组,且包含需要校验的字段名。

2. 确保数据库操作时启用了 Schema 校验

  • uniCloud 中,数据库操作(如 addupdate)需要显式启用 DB Schema 校验。例如:
    const db = uniCloud.database();
    db.collection('yourCollection').add({
      name: "John",
      age: 25
    }).then(res => {
      console.log(res);
    }).catch(err => {
      console.error(err);
    });
  • 如果未启用 DB Schema 校验,required 字段的校验将不会生效。

3. 检查数据库集合的 Schema 是否已生效

  • uniCloud 控制台中,确保你为集合配置的 DB Schema 已经发布并生效。
  • 如果 Schema 未发布或未生效,校验规则将不会起作用。

4. 检查字段值是否为空

  • required 字段校验仅对字段值为 undefinednull 时生效。如果字段值为空字符串 ""0,校验可能不会触发。
  • 如果需要校验空字符串或 0,可以使用 pattern 或自定义校验规则。

5. 调试和日志

  • uniCloud 控制台中查看数据库操作的日志,检查是否有校验失败的提示。
  • 如果校验失败,日志中会显示具体的错误信息。

6. 更新 uni-app 和 uniCloud SDK

  • 确保你使用的是最新版本的 uni-appuniCloud SDK,旧版本可能存在 Schema 校验的 Bug。

7. 自定义校验规则

  • 如果 required 字段校验仍然无效,可以尝试使用 validator 自定义校验规则。例如:
    {
      "bsonType": "object",
      "required": ["name"],
      "properties": {
        "name": {
          "bsonType": "string",
          "validator": {
            "function": "return !!value;"
          }
        }
      }
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!