J'ai déployé une fonction Cloud Firebase pour mettre à jour des données agrégées, mais j'obtiens les résultats suivants
aggregateReceivedRatings : Erreur : Cannot decode type from Firestore Value : {"integerValue" : "3"} at DocumentSnapshot._decodeValue (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:464:15) at DocumentSnapshot.get (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:372:17) at exports.aggregateReceivedRatings.functions.firestore.document.onWrite.event (/user_code/lib/index.js:9:32) à Object. (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27) at next (native) at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12) at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36) à /var/tmp/worker/worker.js:695:26 at process._tickDomainCallback (internal/process/next_tick.js:135:7)
La fonction est très similaire à celle illustrée dans la section de la solution Firestore pour les requêtes d'agrégation :
exports.aggregateReceivedRatings = functions.firestore.document('users/{userId}/feedbacks_received/{ratingId}')
.onWrite(event => {
var ratingVal = event.data.get('rating');
const db = admin.firestore();
var restRef = db.collection('users').document(event.params.userId);
return db.transaction(transaction => {
return transaction.get(restRef).then(restDoc => {
var newNumRatings = restDoc.data('received_feedbacks').tot + 1;
var newSum = restDoc.data('received_feedbacks').sum + ratingVal;
return transaction.update(restRef, {
sum: newSum,
tot: newNumRatings
});
});
});
});
Et la valeur nominale est le nombre entier 3.
J'ai aussi exécuté
npm install firebase-functions@latest firebase-admin@latest --save
et redéployé mais sans succès.
Mon package.json contient les éléments suivants :
{
"name": "functions",
"scripts": {
"build": "./node_modules/.bin/tslint -p tslint.json && ./node_modules/.bin/tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "~5.4.2",
"firebase-functions": "^0.7.1"
},
"devDependencies": {
"tslint": "^5.8.0",
"typescript": "^2.5.3"
},
"private": true
}
Une aide ?