Node.js Lambda函数中事件参数数值相加变拼接问题求助
问题解决:DynamoDB数值拼接而非求和
问题根源很明确:
event.First和event.Second是字符串类型,直接用+会触发字符串拼接逻辑,而非数值求和- 你把结果存在了DynamoDB的
S(字符串)类型字段里,即使完成求和也会以字符串形式存储
修正方案
1. 保持原字段类型(字符串),先求和再存
先把两个值转成数值类型完成求和,再转成字符串存入:
"Total": { "S": (parseInt(event.First, 10) + parseInt(event.Second, 10)).toString() }
如果是浮点数计算,把parseInt换成parseFloat即可。
2. 改用DynamoDB数值类型存储(更规范)
如果Total字段本身应该是数值,建议用N类型存储(DynamoDB中数值类型需以字符串形式写在N字段内):
"Total": { "N": (parseInt(event.First, 10) + parseInt(event.Second, 10)).toString() }
注意:parseInt一定要加第二个参数10指定十进制,避免非预期的进制解析问题。
内容的提问来源于stack exchange,提问作者JijiN
相关产品推荐
相关产品推荐

