Firebase firestore cloud функции, показывающие Ошибка: недопустимое использование типа "undefined" в качестве аргумента Firestore
У меня есть проект по добавлению данных о валютах в базу данных firestore, и мой проект работает с ионным 3
Всякий раз, когда я добавляю новый документ в коллекцию, триггерная функция onCreate() будет выполнять и обновлять документ с именем "обновлено".
Но функция триггера всегда показывает ошибку.
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;
});
Ответы
Ответ 1
Это сообщение об ошибке:
Invalid use of type "undefined" as a Firestore argument.
Вы можете видеть в вашей трассе стека, что это происходит, когда вы вызываете set() с объектом на DocumentReference. Оказывается, одно из значений, которые вы передаете в объекте, не определено. Проверьте каждое из значений, которые вы передаете, и убедитесь, что все они имеют фактическое значение:
.set({
id : id,
branchName : branchName,
currencyName : currencyName,
sellingRate : sellingRate,
buyingRate :buyingRate
});
Невозможно определить, какой из них является сообщением об ошибке, поэтому вам придется распечатывать их все, чтобы сделать что-то, чтобы проверить каждый из них.
Ответ 2
Когда вы устанавливаете объект, но одно из полей в объекте не определено, вы получите эту ошибку.
Проблема в том, что когда вы используете console.log для отображения объекта, он не показывает неопределенные переменные, поэтому его сложно отследить.
Используйте следующую команду вместо console.log, чтобы найти элемент, вызывающий проблему.
const util = require ('util') console.log(util.inspect(myObject, {showHidden: false, deep: null}))
Это даст вам следующий вывод:
{происхождение: 'AMS', пункт назначения: не определено, продолжительность: 94, перевозчик: 'KL', номер рейса: '2977', вылет: '2019-06-11T15: 34: 00', прибытие: '2019-06-11T17: 08:00 ', введите:' flight '}