Ошибка облачных функций Firestore: неверное использование типа "function" в качестве аргумента Firestore. - PullRequest
0 голосов
/ 01 ноября 2018

Может кто-нибудь помочь с этой ошибкой, пожалуйста? Я видел аналогичный ответ на «Облачные функции Firebase Firestore, показывающие ошибку: недопустимое использование типа« undefined »в качестве аргумента Firestore», но этот ответ не помогает.

Error: Invalid use of type "function" as a Firestore argument.
    at Object.customObjectError (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/validate.js:168:16)
    at Serializer.encodeValue (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/serializer.js:146:26)
    at Serializer.encodeFields (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/serializer.js:54:34)
    at Serializer.encodeValue (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/serializer.js:139:44)
    at Serializer.encodeValue (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/serializer.js:124:38)
    at Serializer.encodeFields (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/serializer.js:54:34)
    at Function.fromObject (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/document.js:77:53)
    at WriteBatch.set (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/write-batch.js:245:54)
    at DocumentReference.set (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/reference.js:349:27)
    at exports.userSignupData.functions.auth.user.onCreate (/user_code/lib/userSignupData.js:9:20

Функция используется в приложении ionic 4:

import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
admin.initializeApp();

const db = admin.firestore();

export const userSignupData = functions.auth.user().onCreate((user, context) => {
  const userRef = db.doc(`users/${user.uid}`);

  return userRef.set({
    id: user.uid,
    createdAt: context.timestamp,
    signupEmail: user.email,
    emailVerified: user.email,
    originalSigninProvider: user.providerData
  });
});

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

В данных, которые вы пытаетесь загрузить, context.timestamp, вероятно, относится к типу функции, то есть вы пытаетесь передать функцию, а не действительную «дату» или «отметку времени» в хранилище.

В соответствии с этим потоком при создании отметок времени в хранилище вы можете передать действительную отметку времени начиная с Фев 2019 , например:

firestore().collection("item")
.add({...item, created: firebase.firestore.Timestamp.fromDate(new Date()) })
0 голосов
/ 01 ноября 2018

Кажется, что firebase не любит повторный вызов свойства в объекте set, т.е.

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