uni-app 云函数 统计错误

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

uni-app 云函数 统计错误

操作步骤:

  • 打开dcloud 后台统计

预期结果:

  • 正常统计

实际结果:

  • 不正常统计

bug描述:

  • 5分钟统计 数据库写操作为 20万 WU
  • 因为统计错误,导致我的 套餐超量 停服不能用,我被迫紧急升级套餐 (专业版 -> 企业版)
  • 现在需要把企业版再 变配回 专业版

Image

6 回复

阿里云不支持降配,支持转换按量计费,可以操作转换按量计费(如果函数用量高,其他资源使用率低的话,按量计费比较合适)


你没明白 我意思 本来我套餐够用的,你看我发的图片 是不是统计出错了

回复 Spring_CTH: 数据库的RU和WU和数据量大小有关,写入的数据量大,即使次数不多用量也比较高

回复 DCloud_云服务_moyang: 一次写入20w数据吗

在处理uni-app云函数中的错误统计时,我们可以利用云函数日志记录和错误捕获机制,将错误信息发送到指定的日志服务或数据库中进行集中管理。以下是一个简单的代码示例,展示了如何在uni-app云函数中捕获错误并记录到云数据库中。

云函数代码示例(Node.js)

首先,确保你已经在uniCloud项目中配置了云数据库。

// 云函数入口文件 index.js
const cloud = require('wx-server-sdk');
const db = cloud.database();

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
});

exports.main = async (event, context) => {
  try {
    // 示例业务逻辑
    const { someInput } = event;
    if (!someInput) {
      throw new Error('缺少输入参数');
    }

    // 假设进行一些数据库操作或其他异步操作
    const result = await db.collection('example').add({
      data: {
        name: someInput,
        createdAt: new Date(),
      },
    });

    return {
      success: true,
      result,
    };
  } catch (error) {
    // 捕获错误并记录到云数据库中
    const errorLog = {
      errorMessage: error.message,
      stack: error.stack,
      functionName: context.FUNCTION_NAME,
      timestamp: new Date(),
    };

    await db.collection('errorLogs').add({
      data: errorLog,
    });

    // 返回错误信息给客户端
    return {
      success: false,
      error: errorLog,
    };
  }
};

云数据库配置

确保你的云数据库中已经创建了errorLogs集合,用于存储错误日志。你可以通过uniCloud控制台进行创建,并设置合适的索引和字段类型。

调用云函数

在uni-app前端代码中,你可以通过uni.cloud.callFunction来调用这个云函数,并处理返回的结果或错误。

uni.cloud.callFunction({
  name: 'yourCloudFunctionName',
  data: {
    someInput: 'test input',
  },
  success: (res) => {
    if (res.result.success) {
      console.log('操作成功', res.result.result);
    } else {
      console.error('发生错误', res.result.error);
    }
  },
  fail: (err) => {
    console.error('调用云函数失败', err);
  },
});

这个示例展示了如何在uni-app云函数中捕获并记录错误,同时将错误信息返回给前端进行处理。通过这种方法,你可以有效地监控和管理云函数中的错误。

回到顶部