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'
}