web-dev-qa-db-fra.com

Fonctions cloud de Firebase Firestore affichant une erreur: Utilisation non valide du type "indéfini" en tant qu'argument Firestore

J'ai un projet pour ajouter des détails de devise dans la base de données Firestore et mon projet se fait avec ionic 3

Chaque fois que j'ajoute un nouveau document à la collection, une fonction de déclencheur onCreate () va exécuter et mettre à jour le document nommé 'updated'.

Mais la fonction de déclenchement affiche toujours une erreur.

Error: Invalid use of type "undefined" as a Firestore argument.
    at Object.exports.customObjectError.val [as customObjectError] (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/validate.js:164:14)
    at Function.encodeValue (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:808:20)
    at Function.encodeFields (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:678:36)
    at Function.fromObject (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:218:55)
    at WriteBatch.set (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/write-batch.js:291:39)
    at DocumentReference.set (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/reference.js:419:8)
    at Object.<anonymous> (/user_code/lib/index.js:28:10)
    at next (native)
    at /user_code/lib/index.js:7:71
    at __awaiter (/user_code/lib/index.js:3:12)

sombody s'il vous plaît aider ..

j'ai passé beaucoup de temps dessus.

Voici le code: 

import * as functions from 'firebase-functions';

const admin = require('firebase-admin');
admin.initializeApp();

exports.createCurrency = functions.firestore
.document('Exchange/{ExchangeId}')
.onCreate( async (snap, context) => {

const id: string = snap.data().id;
const branchName: string = snap.data().branchName;
const currencyName: string = snap.data().currencyName;
const buyingRate : string = snap.data().buyingRate;
const sellingRate : string = snap.data().sellingRate;


 const newUser= admin.
 firestore()
 .doc(`Exchange/updated`)
 .set({
   id : id,
   branchName : branchName,
   currencyName : currencyName,
   sellingRate : sellingRate,
   buyingRate :buyingRate
  });

 return newUser;


 });
16
pepe

Le message d'erreur est le suivant:

Invalid use of type "undefined" as a Firestore argument.

Vous pouvez voir dans votre trace de pile que cela se produit lorsque vous appelez set () avec un objet sur DocumentReference. Il s'avère que l'une des valeurs que vous transmettez dans l'objet n'est pas définie. Vérifiez chacune des valeurs que vous transmettez et assurez-vous qu'elles ont toutes une valeur réelle:

 .set({
   id : id,
   branchName : branchName,
   currencyName : currencyName,
   sellingRate : sellingRate,
   buyingRate :buyingRate
  });

Il est impossible de savoir lequel est le message d'erreur. Vous devrez donc les imprimer tous et vérifier chacun d'eux.

37
Doug Stevenson

Lorsque vous définissez un objet mais que l'un des champs de l'objet n'est pas défini, vous obtiendrez cette erreur. 

Le problème est que lorsque vous utilisez console.log pour afficher l'objet, les variables non définies ne sont pas affichées, ce qui rend le suivi difficile. 

Utilisez ce qui suit au lieu de console.log pour rechercher l'élément à l'origine du problème. 

const util = require('util');
console.log(util.inspect(myObject, {showHidden: false, depth: null}));

Cela vous donnera une sortie comme suit:

{ Origin: 'AMS',
  destination: undefined,
  duration: 94,
  carrier: 'KL',
  flight_number: '2977',
  departure: '2019-06-11T15:34:00',
  arrival: '2019-06-11T17:08:00',
  type: 'flight' }
0
Leonard Cremer