uni-app 官方schema表结构文档例子复现有bug required字段设置无效
uni-app 官方schema表结构文档例子复现有bug required字段设置无效
示例代码:
const db = uniCloud.database();
async function addresume() {
db.collection("resume")
.add({
"name": "12",
"birth_year": 2001,
"tel": "12377779999",
"email": "12377779999@qq.com",
"address": {
"street": "abc"
}
})
.then((res) => {
// res 为数据库查询结果
console.log(res)
}).catch((err) => {
console.log(err.message)
});
}
操作步骤:
官方DB Schema概述示例中 属性列表 第一个resume例子
预期结果:
{
"name": "15",
"birth_year": 2001,
"tel": "12377779999",
"email": "12377779999@qq.com",
"address": {
"street": "abc"
}
}
这条结果 address
下不存在 city
应该不能入库
实际结果:
{
"name": "15",
"birth_year": 2001,
"tel": "12377779999",
"email": "12377779999@qq.com",
"address": {
"street": "abc"
}
}
这条结果却能入库
bug描述:
官方DB Schema概述示例中例子 关于字段级别设置了required address
输入不管存不存在 city
都可以入库
更多关于uni-app 官方schema表结构文档例子复现有bug required字段设置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
看下你的db对象是如何声明的,只有JQL对象才有效果,传统的db对象是不生效的
即 schema 只对JQL的db对象生效
更多关于uni-app 官方schema表结构文档例子复现有bug required字段设置无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
const db = uniCloud.database(); async function addresume() { db.collection(“resume”).add({ “name”: “12”, “birth_year”: 2001, “tel”: “13677778888”, “emal”: “135777789@qq.com”, “address”: { “street”: “abc” } }) }直接在前端使用const db = uniCloud.database(); 应该走的是JQL吧
resume表schema 结构是直接赋值官方文档的 addresume函数是直接在前端调用 address 下的 city字段必填 但是{
“name”: “12”,
“birth_year”: 2001,
“tel”: “13677778888”,
“emal”: “135777789@qq.com”,
“address”: {
“street”: “abc”
}
})这条数据却能添加入库
在使用 Uni-App 开发时,如果你在 Schema 表结构中设置 required
字段时遇到无效的问题,可能是由于以下几个原因导致的。以下是一些可能的原因和解决方法:
1. Schema 定义错误
确保你在定义 Schema 时正确地使用了 required
字段。required
字段应该是一个数组,包含所有必填字段的名称。
const schema = {
"properties": {
"name": {
"type": "string",
"title": "姓名"
},
"age": {
"type": "number",
"title": "年龄"
}
},
"required": ["name", "age"]
};
2. 数据验证逻辑问题
确保你在提交数据时正确地调用了验证逻辑。你可以使用 validate
方法来验证数据是否符合 Schema 的要求。
const data = {
name: "张三",
age: 25
};
const result = validate(data, schema);
if (result.valid) {
console.log("数据有效");
} else {
console.log("数据无效", result.errors);
}
3. 框架或库的版本问题
如果你使用的是 Uni-App 的某个特定版本,可能存在 Bug 或与 required
字段相关的问题。尝试更新到最新版本,或者查看官方文档和社区中是否有相关的已知问题。
4. 自定义验证逻辑
如果你在 validate
方法之外使用了自定义的验证逻辑,确保你没有覆盖或忽略了 required
字段的验证。
5. 默认值问题
如果某些字段有默认值,可能会影响 required
字段的验证结果。确保你没有为必填字段设置默认值,或者确保默认值符合你的验证逻辑。
6. 调试和日志
在开发过程中,添加一些调试日志来检查 required
字段是否被正确识别和处理。例如:
console.log("Schema:", schema);
console.log("Data:", data);
console.log("Validation Result:", result);
7. 检查官方文档和社区
如果你仍然无法解决问题,建议查看 Uni-App 的官方文档,或者在 Uni-App 的社区中寻求帮助。可能有其他开发者遇到过类似的问题,并且已经提供了解决方案。
示例代码
以下是一个完整的示例,展示如何定义 Schema 并进行验证:
const schema = {
"properties": {
"name": {
"type": "string",
"title": "姓名"
},
"age": {
"type": "number",
"title": "年龄"
}
},
"required": ["name", "age"]
};
const data = {
name: "张三",
age: 25
};
const result = validate(data, schema);
if (result.valid) {
console.log("数据有效");
} else {
console.log("数据无效", result.errors);
}