自动化平台云原生 BaaS (Backend as a Service) 为开发者提供了强大的云端数据管理能力。通过其提供的 API,我们可以在 FaaS (Function as a Service) 函数中轻松实现对云端数据库的增、删、改、查(CRUD)操作,而无需关心底层服务器的搭建与维护。本文将详细介绍如何使用BaaS API 进行数据库操作,并结合实际场景进行说明。

🗄️ 数据库操作 API 概览

冰狐 BaaS 提供了四个核心的数据库操作 API,它们设计简洁,功能明确,足以应对绝大多数业务场景。

  • dbInsert: 向指定数据表中插入一条新的数据记录。
  • dbQuery: 根据设定的条件查询数据表中的记录。
  • dbUpdate: 根据条件更新数据表中的现有记录。
  • dbDelete: 根据条件从数据表中删除记录。

这些 API 可以直接在 FaaS 函数中调用,使得云端逻辑处理和数据持久化变得非常便捷。

✍️ 插入数据 (dbInsert)

dbInsert 用于向数据库中添加新数据。当操作成功时,它会返回新插入数据项的唯一 ID;如果失败,则返回 -1。

参数说明:

参数名 类型 必填 说明
tableName string 目标数据表的名称。
data json object 要插入的数据,以键值对的形式组织。

应用场景示例:
假设我们正在开发一个自动化任务平台,需要记录每个设备执行任务的历史。当设备完成一个任务后,FaaS 函数可以调用 dbInsert 来保存这条记录。

// FaaS 函数代码示例
function main(params) {
    // 假设 params 包含了设备ID、任务类型和结果
    var deviceUuid = params.deviceUuid;
    var taskType = params.taskType;
    var result = params.result;
    var timestamp = new Date().getTime();

    // 准备要插入的数据
    var logData = {
        deviceId: deviceUuid,
        type: taskType,
        status: result,
        executeTime: timestamp
    };

    // 调用 dbInsert API 写入数据库
    var recordId = dbInsert("task_logs", logData);

    if (recordId > 0) {
        console.log("任务日志记录成功,ID: " + recordId);
        return { success: true, id: recordId };
    } else {
        console.error("任务日志记录失败");
        return { success: false };
    }
}

🔍 查询数据 (dbQuery)

dbQuery 是功能最丰富的查询接口,支持多表、多条件、排序和分页查询。

参数说明:

参数名 类型 必填 说明
tableNames string 表名,多个表用英文逗号 , 分隔。
columns string 需要返回的列名,多个列用英文逗号 , 分隔。使用 * 可返回所有列。
conditions json array 查询条件数组,每个元素是一个条件字符串,如 ["status=1", "type='login'"]
order string 排序规则,如 "executeTime desc"
offset integer 查询结果的偏移量,用于分页,默认为 0。
limit integer 限制返回的记录数量,-1 表示返回所有,默认为 -1。

应用场景示例:
我们需要为管理员提供一个功能,查询某个设备最近 10 条失败的任务记录。

// FaaS 函数代码示例
function main(params) {
    var targetDeviceId = params.deviceId;

    // 构建查询条件:设备ID匹配 且 状态为失败(假设0代表失败)
    var queryConditions = [
        "deviceId='" + targetDeviceId + "'",
        "status=0"
    ];

    // 调用 dbQuery API
    var results = dbQuery(
        "task_logs",           // 表名
        "*",                   // 查询所有列
        queryConditions,       // 查询条件
        "executeTime desc",    // 按执行时间倒序排列
        0,                     // 从第一条开始
        10                     // 最多取10条
    );

    // results 是一个 JSON 数组
    console.log("查询到 " + results.length + " 条失败记录");
    return results;
}

🔄 更新数据 (dbUpdate)

dbUpdate 用于修改数据库中已有的数据。操作成功返回 true,失败返回 false

参数说明:

参数名 类型 必填 说明
tableName string 目标数据表的名称。
sets json array 要更新的字段和值,如 ["status=1", "remark='处理完成'"]
conditions json array 更新操作的条件,只有满足条件的记录才会被更新。

应用场景示例:
当一个之前失败的任务被重新执行并成功后,我们需要更新其状态。

// FaaS 函数代码示例
function main(params) {
    var logId = params.logId; // 要更新的日志记录ID

    // 设置要更新的值
    var updateValues = [
        "status=1", // 假设1代表成功
        "remark='重试后成功'"
    ];

    // 设置更新条件
    var updateConditions = [
        "id=" + logId
    ];

    var isUpdated = dbUpdate("task_logs", updateValues, updateConditions);

    if (isUpdated) {
        console.log("日志记录更新成功");
    } else {
        console.error("日志记录更新失败,可能ID不存在");
    }
    return isUpdated;
}

🗑️ 删除数据 (dbDelete)

dbDelete 用于从数据库中删除数据。操作成功返回 true,失败返回 false

参数说明:

参数名 类型 必填 说明
tableName string 目标数据表的名称。
conditions json array 删除操作的条件,只有满足条件的记录才会被删除。

应用场景示例:
为了节省存储空间,我们需要一个定时任务来清理 30 天前的任务日志。

// FaaS 函数代码示例
function main() {
    // 计算30天前的时间戳
    var thirtyDaysAgo = new Date().getTime() - (30 * 24 * 60 * 60 * 1000);

    // 设置删除条件
    var deleteConditions = [
        "executeTime < " + thirtyDaysAgo
    ];

    var isDeleted = dbDelete("task_logs", deleteConditions);

    if (isDeleted) {
        console.log("过期日志清理成功");
    } else {
        console.log("没有需要清理的过期日志或清理失败");
    }
    return isDeleted;
}

✨ 总结

通过 dbInsertdbQuerydbUpdate 和 dbDelete 这四个 API,冰狐智能辅助平台为开发者构建了一个完整且易于使用的云端数据管理方案。无论是记录自动化脚本的运行日志、存储用户配置,还是管理设备状态,这些 API 都能提供稳定可靠的支持。结合 FaaS 的无服务器特性,开发者可以将精力完全集中在业务逻辑的实现上,极大地提升了开发效率和应用的可靠性。

更多推荐