You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现普通对象到NoSQL数据库存储格式的转换

转换逻辑实现

你需要的是适配AWS DynamoDB的AttributeValue存储格式转换,以下是可直接运行的JavaScript实现:

核心转换规则

  • 布尔值:封装为 { BOOL: 原始布尔值 }
  • 数字值:取整数部分后转为字符串,封装为 { N: "整数字符串" }
  • 嵌套对象:递归处理所有子属性后,封装为 { M: 转换后的子属性集合 }
  • 可自定义过滤不需要存入数据库的字段(比如示例中的invalidated字段)

完整代码

// 配置不需要转换的过滤字段
const EXCLUDE_FIELDS = ['invalidated']

function convertToNoSqlFormat(obj) {
  const result = {}
  for (const [key, value] of Object.entries(obj)) {
    // 跳过过滤字段
    if (EXCLUDE_FIELDS.includes(key)) continue

    // 判断值类型做对应转换
    if (typeof value === 'boolean') {
      result[key] = { BOOL: value }
    } else if (typeof value === 'number') {
      // 取整数部分转字符串,和示例输出规则一致
      result[key] = { N: `${Math.floor(value)}` }
    } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
      // 嵌套对象递归处理
      result[key] = { M: convertToNoSqlFormat(value) }
    }
    // 如果需要支持字符串、数组等其他类型可以自行扩展对应规则
  }
  return result
}

// 测试用例
const originalObj = {
  "visible": true,
  "active": true,
  "invalidated": true,
  "handles": {
    "start": {
      "x": 2094.803738317757,
      "y": 2038.5794392523367,
      "highlight": true,
      "active": false
    },
    "end": {
      "x": 2487.1775700934586,
      "y": 2555.364485981309,
      "highlight": true,
      "active": false,
      "moving": false
    },
    "initialRotation": 0,
  }
}

console.log(JSON.stringify(convertToNoSqlFormat(originalObj), null, 2))

输出说明

上述代码运行后的输出和你期望的目标格式完全一致,后续如果需要支持字符串、数组、二进制等其他数据类型,只需要在类型判断分支中新增对应转换规则即可,比如字符串对应{ S: 原始字符串 }、数组对应{ L: [转换后的元素集合] }。

内容的提问来源于stack exchange,提问作者Ragu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 00:45:02