Este es uno extremadamente raro. Estoy usando datamapper para dynamo y dynamolocal en mecanografiado para probar mis cosas. Por alguna razón, sobrescribe un campo de objeto y no puedo entender por qué.
Estoy sembrando la mesa así:
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 }) ); }En este fragmento anterior, los objetos del bucle for imprimirán: "myBool: false"
sin embargo en la tabla serán true (¿qué?)
la segunda parte donde codifico el objeto, se guarda con myBool: false como era de esperar
Si sobrescribo el valor, funciona, pero si conservo el objeto original, cambia a true sin motivo aparente.
este es el fromImplementación parcial
public fromPartial(data: Partial<MyObject>): MyObject { Object.assign(this, data); return this; }¿Se trata de un error de dynamodb/dynamodb-local/mi implementación/javascript/mecanografiado? alguien tiene idea de cual puede ser el origen del problema?
Editar: ddbmapper es la clase DataMapper de dynamodb-data-mapper
Ok, encontré el problema, en realidad el valor era "false" en lugar de false , que el mapeador parece forzar en el tiempo de ejecución para que la cadena se evalúe como true . Una especie de comportamiento extraño cuando sabes que pasar un objeto con las propiedades correctas pero ningún tipo no funciona con datamapper: el problema de github del que estoy hablando