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 字段值不符合数据库中定义的枚举值。
解决方法:
- 
检查数据库枚举定义:
- 查看数据库中 
uid字段的枚举定义,确认允许的值有哪些。 - 例如,如果 
uid字段定义为ENUM('A', 'B', 'C'),那么你只能插入A、B或C作为uid的值。 
 - 查看数据库中 
 - 
检查提交的数据:
- 确保你提交的数据中 
uid字段的值在枚举范围内。 - 例如,如果你提交的 
uid是D,而数据库中uid的枚举定义是ENUM('A', 'B', 'C'),那么就会触发这个错误。 
 - 确保你提交的数据中 
 - 
修正提交的数据:
- 如果 
uid的值不在枚举范围内,你需要将其修改为符合枚举定义的值。 - 例如,将 
uid从D修改为A、B或C。 
 - 如果 
 - 
动态处理枚举值:
- 如果你的应用需要处理动态的 
uid值,可能需要重新设计数据库字段类型,例如使用VARCHAR或INT类型,而不是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'
}
        
      
                    
                  
                    
