Я пытаюсь запустить функцию Firebase, которая просто добавляет строку в документ базы данных (сохранение товара в корзину). Действие не завершается, и я получаю интересное сообщение об ошибке.
const cartItem = "Product name"
firebase.functions().httpsCallable('addToCart')({ cartItem })
И в моем индексе функций. js:
exports.addToCart = functions.https.onCall((data, context) => {
const userID = context.auth.uid
cartItem = data.cartItem
const cartDoc = db.doc(`/carts/${userID}`)
cartDoc.set({
...cartDoc,
items: [cartItem]
})
})
И это мое сообщение об ошибке в Firebase console:
Unhandled error Error: Value for argument "data" is not a valid Firestore document. Couldn't serialize object of type "Firestore" (found in field "_firestore"). Firestore doesn't support JavaScript objects with custom prototypes (i.e. objects that were created via the "new" operator).
at Object.validateUserInput (/srv/node_modules/@google-cloud/firestore/build/src/serializer.js:301:15)
at validateDocumentData (/srv/node_modules/@google-cloud/firestore/build/src/write-batch.js:620:22)
at WriteBatch.set (/srv/node_modules/@google-cloud/firestore/build/src/write-batch.js:234:9)
at DocumentReference.set (/srv/node_modules/@google-cloud/firestore/build/src/reference.js:340:14)
at exports.addToCart.functions.https.onCall (/srv/index.js:258:13)
at func (/srv/node_modules/firebase-functions/lib/providers/https.js:267:32)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
Он говорит, что не может сериализовать объект типа "Firestore", найденный в поле "_firestore". Я нахожу это довольно загадочным. Кроме того, этот синтаксис прекрасно работает в других моих функциях, которые пишут в документы базы данных. Я попытался передать строку напрямую, например, ('addToCart')('Product_Name')
, и я также попытался явно указать прототип, как я видел это в других сообщениях, например, ({cartItem: 'Product_Name', __proto__: Object})
, и я также попытался обновить свои зависимости.
Любые мысли будут с благодарностью, спасибо.