Estoy tratando de almacenar un objeto en Firestore. Mi objeto contiene una matriz:
{ returnMode: false, id: "SE-74c5219a-acfe-4185-9e33-f78b10ac3f1e", prices: [ { price: { twoHours: 0, firstHour: 0, id: "zero", unlock: 0, final: 0, }, permission: { id: "GENERAL" }, }, { price: { twoHours: 150, unlock: 100, id: "oebb_low", firstHour: 50, final: 50, }, permission: { id: "OEBB" }, }, ], }Si este objeto está codificado en Cloud Function, me permite guardarlo en Firestore sin fallar. Si reemplazo la matriz del objeto anterior con una variable como esta, todavía funciona:
const array = [ { price: { twoHours: 0, firstHour: 0, id: "zero", unlock: 0, final: 0, }, permission: { id: "GENERAL" }, }, { price: { twoHours: 150, unlock: 100, id: "oebb_low", firstHour: 50, final: 50, }, permission: { id: "OEBB" }, }, ]; { returnMode: false, id: "SE-74c5219a-acfe-4185-9e33-f78b10ac3f1e", prices: array, }Sin embargo, cuando la matriz anterior no está codificada en la función de la nube sino que es creada por mi programa, falla. Este es el código que genera la matriz:
const bikeBoxPriceArray = []; for (let i = 0; i < bikeBoxPermissionArray.length; i += 1) { const doc = bikeBoxPermissionArray[i]; // I cut out the stuff that is not important const bikeBoxPriceArrayElement = { permission: { id: doc.id, name: doc.name, }, price: { id: priceId, unlock: priceUnlock, firstHour: priceFirstHour, twoHours: priceTwoHours, final: priceFinal, }, }; bikeBoxPriceArray.push(bikeBoxPriceArrayElement); } Verifiqué con bikeBoxPriceArray instanceof Array que de hecho es una matriz. ¿Qué estoy haciendo mal? Probé muchas cosas, pero simplemente no puedo resolverlo. ¿Por qué funciona cuando está codificado pero no con la variable?
El código está dentro de una Transacción de Firebase y no hay ningún mensaje de error, solo me indica la ubicación del error.
Encontré una respuesta a mi propia pregunta de esta publicación .
Antes de fusionar el objeto con la matriz, la matriz debe ser encadenada y luego analizada nuevamente de la siguiente manera:
const array = JSON.parse(JSON.stringify(bikeBoxPriceArray)); const sessionDocObj = { returnMode: false, timestamp: { // sessionCreated: admin.firestore.FieldValue.serverTimestamp(), sessionCreated: "Karoline", }, id: "SE-" + uuidv4(), prices: array, };