写入本地DynamoDB时对象字段被异常修改的原因排查
dynamodb-data-mapper写入DynamoDB Local时布尔字段意外覆写问题
问题背景
在TypeScript环境下使用dynamodb-data-mapper的DataMapper类,配合DynamoDB Local开展功能测试时,发现写入数据的某个布尔字段会被意外覆写,无法定位问题原因。
种子数据写入代码
private async seedTable() { // FIRST PART for (const obj of [...objects]) { const toSave = new MyObject().fromPartial({ ...obj }); console.log(`myBool: ${toSave.myBool}`); await this.ddbMapper.put(toSave); } // SECOND PART await this.ddbMapper.put( new MyObject().fromPartial({ ...objects[0], objId: "test", myBool: false }) ); }
异常表现
- for循环执行时,控制台日志打印结果为
myBool: false,但实际写入DynamoDB Local表中的对应字段值为true - 第二部分硬编码
myBool: false的对象写入后,字段值为false,符合预期 - 重复测试验证结论:如果显式覆写
myBool字段值,写入结果正常;如果保留原始对象中的该字段值,写入后会无明确原因变为true
自定义方法实现
项目中MyObject类的fromPartial方法实现如下:
public fromPartial(data: Partial<MyObject>): MyObject { Object.assign(this, data); return this; }
待解答问题
- 该问题是DynamoDB、DynamoDB Local、自身代码实现、JavaScript还是TypeScript的缺陷导致?
- 可通过什么思路定位问题来源?
补充说明:代码中
ddbMapper为dynamodb-data-mapper包提供的DataMapper类实例。
内容的提问来源于stack exchange,提问作者Shraneid
相关产品推荐
相关产品推荐

