uni-app 删除楼中楼怎么写 schema 校验?

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 删除楼中楼怎么写 schema 校验?

我想让楼主可以删除一条评论,然后子评论一并删除,但会导致一个问题,权限过不了,delete 权限改为 true 可以解决,但是感觉不是很好,希望大佬提供一下帮助

1 回复

在uni-app中,若要实现删除楼中楼(即嵌套评论)的功能,并且需要对删除请求的数据进行schema校验,可以使用uni.request发送删除请求,并结合JSON Schema进行校验。以下是一个示例代码,展示了如何定义schema以及进行校验。

1. 定义删除请求的Schema

首先,定义一个JSON Schema来描述删除请求的数据结构。对于删除操作,通常只需要传递一个标识符(如评论ID)来指定要删除的资源。

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "commentId": {
      "description": "要删除的评论ID",
      "type": "string",
      "format": "uuid"  // 假设评论ID是UUID格式,可以根据实际情况调整
    }
  },
  "required": ["commentId"],
  "additionalProperties": false
}

2. 在uni-app中进行数据校验和发送请求

接下来,在uni-app中使用该schema进行数据校验,并发送删除请求。

// 引入ajv库进行JSON Schema校验
const Ajv = require('ajv');
const ajv = new Ajv();

// 定义schema(这里为了示例直接写在代码中,实际可以引用外部文件)
const deleteCommentSchema = {
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "commentId": {
      "description": "要删除的评论ID",
      "type": "string",
      "format": "uuid"
    }
  },
  "required": ["commentId"],
  "additionalProperties": false
};

// 要发送的数据
const dataToDelete = {
  commentId: '123e4567-e89b-12d3-a456-426614174000'
};

// 校验数据
const validate = ajv.compile(deleteCommentSchema);
const valid = validate(dataToDelete);

if (valid) {
  // 数据校验通过,发送删除请求
  uni.request({
    url: 'https://your-api-endpoint.com/deleteComment',
    method: 'POST', // 根据API要求选择方法,可能是DELETE或其他
    data: dataToDelete,
    success: (res) => {
      console.log('删除成功', res.data);
    },
    fail: (err) => {
      console.error('删除失败', err);
    }
  });
} else {
  // 数据校验失败
  console.error('数据校验失败', validate.errors);
}

在这个示例中,我们使用ajv库对删除请求的数据进行JSON Schema校验。如果数据符合schema要求,则发送删除请求;否则,输出校验错误信息。请确保在实际项目中根据后端API的要求调整URL、请求方法和数据结构。

回到顶部