uni-app uni-admin关联其他云服务空间,前端调用云对象更新数据表指定ID数据中某两个字段(加减指定的值),结果两个字段没有被更新

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

uni-app uni-admin关联其他云服务空间,前端调用云对象更新数据表指定ID数据中某两个字段(加减指定的值),结果两个字段没有被更新

操作步骤:

通过前端调用云对象方法,更新数据表指定ID的某条数据的两个字段,通过where()指定某条数据,通过db.command.inc()修改(加减指定的值)字段

预期结果:

首先查询到指定ID的某条数据,判断数据中某字段的值是否大于指定的值,如果符合条件,更新数据中两个字段,分别为加上和减去该指定的值

实际结果:

显示云对象已经被成功调用,但是数据表中的两个字段并没有被更新

bug描述:

前端调用的云对象方法代码如下图:

云对象方法代码


2 回复

不应该使用then的方式,建议改为async await


在使用 uni-admin 关联其他云服务空间时,如果前端调用云对象更新数据表中的指定 ID 数据,但两个字段没有被更新,可能是由于以下几个原因导致的。以下是一些排查和解决问题的步骤:


1. 检查云对象的代码逻辑

确保云对象中的更新逻辑正确,特别是对字段的加减操作。以下是一个示例代码:

module.exports = {
  async updateFields(id, field1Value, field2Value) {
    const db = uniCloud.database();
    const collection = db.collection('your_collection_name');

    // 获取当前数据
    const res = await collection.doc(id).get();
    if (!res.data || res.data.length === 0) {
      return { code: 404, message: '数据不存在' };
    }

    const currentData = res.data[0];

    // 更新字段
    const updateRes = await collection.doc(id).update({
      field1: currentData.field1 + field1Value, // 字段1加减操作
      field2: currentData.field2 + field2Value, // 字段2加减操作
    });

    return { code: 200, message: '更新成功', data: updateRes };
  },
};

注意事项:

  • 确保字段名(field1field2)与数据库中的字段名一致。
  • 确保加减操作正确,避免数据类型不匹配(如字符串和数字相加)。

2. 检查云对象的权限配置

在 uni-admin 中,云对象的调用需要确保权限配置正确。检查以下内容:

  • 云对象的 cloudfunctions 目录下是否有正确的 index.js 文件。
  • 云对象的权限配置是否允许前端调用。

uniCloud/cloudfunctions/your_cloud_function_name/package.json 中,确保 cloudfunction-config 配置正确:

{
  "cloudfunction-config": {
    "permissions": {
      "openapi": []
    }
  }
}

3. 检查前端调用代码

确保前端调用云对象的代码正确,并传递了正确的参数。以下是一个示例:

const cloudFunction = uniCloud.importObject('your_cloud_function_name');

async function updateData() {
  try {
    const res = await cloudFunction.updateFields('your_document_id', 10, -5); // 示例参数
    console.log('更新结果:', res);
  } catch (err) {
    console.error('更新失败:', err);
  }
}

updateData();

注意事项:

  • 确保 your_cloud_function_name 与云对象名称一致。
  • 确保 your_document_id 是有效的文档 ID。
  • 确保传递的参数类型和数量正确。

4. 检查数据库权限

确保数据库的权限配置允许更新操作。在 uniCloud 控制台中,检查集合的权限设置:

  • 确保 update 权限已开启。
  • 确保当前用户或角色有权限更新数据。

5. 查看日志和错误信息

如果更新失败,查看 uniCloud 控制台的日志,检查是否有错误信息。可以通过以下方式查看日志:

  • 在 uniCloud 控制台中,进入云函数日志页面。
  • 查看前端控制台的错误信息。

6. 测试云对象

在 uniCloud 控制台中,直接测试云对象,确保其逻辑正确。在控制台中,选择云对象并传入参数进行测试。


7. 检查数据类型

确保数据库中的字段类型与更新操作中的数据类型一致。例如,如果字段是数字类型,确保加减操作的值也是数字类型。


8. 更新 uniCloud SDK

确保 uniCloud SDK 是最新版本,避免因版本问题导致的 bug。可以通过以下命令更新:

npm install [@dcloudio](/user/dcloudio)/uni-cloud -g
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!