uni-app 数据库验证失败 ["uid"]字段为枚举类型,提交内容不在枚举范围内

uni-app 数据库验证失败 [“uid”]字段为枚举类型,提交内容不在枚举范围内

示例代码:

    "uid": {  
        "bsonType": "string",  
        "title": "用户",  
        "defaultValue": {  
            "$env": "uid"  
        },  
        "foreignKey": "uni-id-users._id",  
        "enum": {  
            "collection": "uni-id-users",  
            "field": "nickname as text,_id as value"  
        }  
    }

操作步骤:

  • 新增数据,不传uid的值

预期结果:

  • 不报错

实际结果:

  • 报错

bug描述:

如果schema里面的字段有defaultValue字段,并且前端不传这个字段,使用默认值。同时如果有enum字段,就会报错:数据库验证失败:[“uid”]字段为枚举类型,提交内容不在枚举范围内,如图。

开发环境 版本号 项目创建方式
uniCloud/App - -


更多关于uni-app 数据库验证失败 ["uid"]字段为枚举类型,提交内容不在枚举范围内的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 数据库验证失败 ["uid"]字段为枚举类型,提交内容不在枚举范围内的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,如果你在使用数据库时遇到 ["uid"] 字段为枚举类型,并且提交的内容不在枚举范围内的错误,这表明你尝试插入或更新的数据中的 uid 字段值不符合数据库中定义的枚举值。

解决方法:

  1. 检查数据库枚举定义

    • 查看数据库中 uid 字段的枚举定义,确认允许的值有哪些。
    • 例如,如果 uid 字段定义为 ENUM('A', 'B', 'C'),那么你只能插入 ABC 作为 uid 的值。
  2. 检查提交的数据

    • 确保你提交的数据中 uid 字段的值在枚举范围内。
    • 例如,如果你提交的 uidD,而数据库中 uid 的枚举定义是 ENUM('A', 'B', 'C'),那么就会触发这个错误。
  3. 修正提交的数据

    • 如果 uid 的值不在枚举范围内,你需要将其修改为符合枚举定义的值。
    • 例如,将 uidD 修改为 ABC
  4. 动态处理枚举值

    • 如果你的应用需要处理动态的 uid 值,可能需要重新设计数据库字段类型,例如使用 VARCHARINT 类型,而不是 ENUM

示例代码:

假设 uid 的枚举定义为 ENUM('A', 'B', 'C'),你可以这样检查并修正提交的数据:

let uid = 'D'; // 假设这是用户提交的 uid 值

// 检查 uid 是否在枚举范围内
if (['A', 'B', 'C'].includes(uid)) {
    // uid 在枚举范围内,可以提交到数据库
    // 执行数据库插入或更新操作
} else {
    // uid 不在枚举范围内,抛出错误或进行其他处理
    console.error('uid 值不在枚举范围内');
    // 可以给用户反馈或设置一个默认值
    uid = 'A'; // 例如,设置为默认值 'A'
}
回到顶部