Облачные функции Firebase Firestore, показывающие Ошибка: Неправильное использование типа "undefined" в качестве аргумента Firestore - PullRequest
0 голосов
/ 01 мая 2018

У меня есть проект для добавления информации о валюте в базу данных пожарного депо, и мой проект работает с ionic 3

Каждый раз, когда я добавляю новый документ в коллекцию, запускается триггерная функция onCreate (), которая обновляет документ с именем «updated».

Но функция триггера всегда показывает ошибку.

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)

Кто-нибудь, пожалуйста, помогите ..

Я потратил на это много времени.

Вот код:

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;


 });

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Когда вы устанавливаете объект, но одно из полей в объекте не определено, вы получите эту ошибку.

Проблема в том, что когда вы используете console.log для отображения объекта, он не показывает неопределенные переменные, поэтому его сложно отследить.

Используйте следующую команду вместо console.log, чтобы найти элемент, вызывающий проблему.

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

Это даст вам следующий вывод:

{ 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 голосов
/ 01 мая 2018

Сообщение об ошибке таково:

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

В трассировке стека видно, что это происходит при вызове set () с объектом в DocumentReference. Оказывается, одно из значений, которые вы передаете в объект, не определено. Проверьте каждое из значений, которые вы передаете, и убедитесь, что все они имеют действительное значение:

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

Невозможно определить, какой из них, из сообщения об ошибке, поэтому вам придется распечатать их все, сделать что-то для проверки каждого из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...