Неподдерживаемое значение поля: функция (находится в поле creationTime) - PullRequest
0 голосов
/ 28 февраля 2019

user-profile.ts

export interface UserProfile {
    id: string;
    name: string;
    email: string;
    phone?: string;
    creationTime?: any;
}

service.ts

async signUp(name: string, email: string, password: string): Promise<void> {
    try {
      const user: firebase.auth.UserCredential = await this.afAuth.auth.createUserWithEmailAndPassword(email, password);
      const userProfileDocument: AngularFirestoreDocument<UserProfile> = this.fireStore.doc(`userProfiles/${user.user.uid}`);
      const userProfile: UserProfile = {
        id: user.user.uid,
        email: email,
        creationTime: firebase.firestore.Timestamp,
        name: name
      };
      await userProfileDocument.set(userProfile);
    } catch (error) {
    }
  }

Одна ошибка на консоли:

[2019-02-28T08: 01: 58.804Z] @ firebase / firestore: Firestore (5.8.3):
Параметр timestampsInSnapshots теперь по умолчанию равен true, и вам больше не нужно явно указывать
для явной установкиЭто.В будущем выпуске параметр
будет полностью удален, поэтому рекомендуется удалить его
из вашего вызова firestore.settings ().

Это следующая ошибка:

FirebaseError: Функция DocumentReference.set () вызвана с неверными данными.Неподдерживаемое значение поля: функция (находится в поле creationTime) в новом FirestoreError (http://localhost:8100/vendor.js:77381:28) в ParseContext.push ../ node_modules/@firebase/firestore/dist/index.cjs.js.ParseContext.createError (http://localhost:8100/vendor.js:96125:16) в UserDataConverter.push ../ node_modules/@firebase/firestore/dist/index.cjs.js.UserDataConverter.parseScalarValue (http://localhost:8100/vendor.js:96467:27) в UserDataConverter.push ../ node_modules / @ firebase / firestore /dist / index.cjs.js.UserDataConverter.parseData (http://localhost:8100/vendor.js:96338:29) в http://localhost:8100/vendor.js:96354:41 в forEach (http://localhost:8100/vendor.js:77483:13) в UserDataConverter.push ../ node_modules / @ firebase / firestore / dist /index.cjs.js.UserDataConverter.parseObject (http://localhost:8100/vendor.js:96353:13) в UserDataConverter.push ../ node_modules/@firebase/firestore/dist/index.cjs.js.UserDataConverter.parseData (http://localhost:8100/vendor.js:96312:25) в UserDataConver.push ../ node_modules/@firebase/firestore/dist/index.cjs.js.UserDataConverter.parseSetData (http://localhost:8100/vendor.js:96177:31) at DocumentReference.push ../ node_modules/@firebase/firestore/dist/index.cjs.js.DocumentReference.set (http://localhost:8100/vendor.js:97049:45)

1 Ответ

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

Вам необходимо сделать следующее:

1-я ошибка: https://github.com/angular/angularfire2/issues/1993#issuecomment-456481677

2-я ошибка:

  const userProfile: UserProfile = {
    id: user.user.uid,
    email: email,
    creationTime: firebase.firestore.FieldValue.serverTimestamp(),
    name: name
  };

Как объяснено в документе, firebase.firestore.FieldValue.serverTimestamp() вернет объект "страж", который вы используете при создании объекта для записи в Firestore.Он будет указывать серверу, что он должен заменить его фактической меткой времени.

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