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

12 回复

看下你的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”,

“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);
}
回到顶部