web-dev-qa-db-de.com

Firebase-Firestore-Cloud-Funktionen zeigen Fehler an: Ungültige Verwendung des Typs "undefined" als Firestore-Argument

Ich habe ein Projekt, um Währungsangaben in die Firestore-Datenbank aufzunehmen, und mein Projekt beschäftigt sich mit ionic 3

Immer wenn ich ein neues Dokument zur Sammlung hinzufüge, wird eine Auslöserfunktion onCreate () das Dokument mit dem Namen "aktualisiert" ausführen und aktualisieren.

Die Triggerfunktion zeigt jedoch immer einen Fehler an.

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)

jemand bitte helfen ..

ich habe viel Zeit damit verbracht.

Hier ist der 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

Die Fehlermeldung lautet:

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

Sie sehen in Ihrer Stack-Ablaufverfolgung, dass dies geschieht, wenn Sie set () mit einem Objekt in einer DocumentReference aufrufen. Es stellt sich heraus, dass einer der Werte, die Sie im Objekt übergeben, undefiniert ist. Überprüfen Sie alle Werte, die Sie übergeben, und stellen Sie sicher, dass alle Werte einen tatsächlichen Wert haben:

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

Es ist unmöglich, anhand der Fehlermeldung herauszufinden, um welche es sich handelt. Sie müssen also alle ausdrucken, indem Sie etwas tun, um jeden einzelnen zu überprüfen.

37
Doug Stevenson

Wenn Sie ein Objekt setzen, eines der Felder im Objekt jedoch nicht definiert ist, wird diese Fehlermeldung angezeigt. 

Das Problem ist, dass bei der Verwendung von console.log zur Anzeige des Objekts die undefinierten Variablen nicht angezeigt werden, sodass die Verfolgung schwierig ist. 

Verwenden Sie Folgendes anstelle von console.log, um das Element zu finden, das das Problem verursacht. 

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

Dadurch erhalten Sie eine Ausgabe wie folgt:

{ 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