Как получить serverTimestamp через Angularfire или firebase - PullRequest
0 голосов
/ 08 мая 2018

Я не могу найти способ получить отметку serverTimestamp из пожарного хранилища. Либо с самим пожарным хранилищем, либо с angularfire.

Я нашел много проблем с решениями, которые не работают. Я думаю, это из-за другой версии?

"@firebase/app": "^0.1.10",
"angularfire2": "^5.0.0-rc.6.0",
"firebase": "^4.13.1",

Варианты кода, которые я пробовал:

import * as firebase from 'firebase';
firebase.firestore.FieldValue.serverTimestamp();

ОШИБКА TypeError: Невозможно прочитать свойство 'FieldValue' из неопределенного

import * as firebase from 'firebase';
firebase.database.ServerValue.TIMESTAMP;

ОШИБКА TypeError: Невозможно прочитать свойство ServerValue из неопределенного

constructor( private afs: AngularFirestore ) { }
this.afs.firestore.FieldValue.serverTimestamp();

Свойство 'FieldValue' не существует для типа 'FirebaseFirestore'.

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

Что помогло в конце, так это удаление всего, что связано с firebase, так как я упоминал в своем вопросе:

"@firebase/app": "^0.1.10",
"angularfire2": "^5.0.0-rc.6.0",
"firebase": "^4.13.1",

И снова запустить npm install firebase angularfire2 --save.

Это дало мне:

"angularfire2": "^5.0.0-rc.7",
"firebase": "^5.0.1",

Который исправил все мои проблемы.

Импорт базы данных как:

import * as firebase from 'firebase';

Сам код метки времени:

get timestamp() {
  return firebase.firestore.FieldValue.serverTimestamp();
}
0 голосов
/ 07 сентября 2018

Просто:

import * as firebase from 'firebase';

Импортирует все модули Firebase, что не является хорошей практикой для производства. Лучше всего использовать пустой импорт следующим образом:

import * as firebase from 'firebase/app'; 
import 'firebase/firestore';

Это только импортирует модуль Firestore в ваше приложение. Затем вы можете сделать:

get timestamp() {
return firebase.firestore.FieldValue.serverTimestamp();
};
0 голосов
/ 09 мая 2018

У меня это работает в моем проекте с:

import { AngularFirestore } from 'angularfire2/firestore';
import { CollectionReference, Query } from '@firebase/firestore-types'; // Not usefull for your problem
import * as firebase from 'firebase';

@Injectable()
export class MyService {

  constructor(private db: AngularFirestore) {
      console.log("firebase.firestore.FieldValue.serverTimestamp()");
      console.log(firebase.firestore.FieldValue.serverTimestamp());
  }
}

И в моих пакетах:

"firebase": "^4.12.1",
"angularfire2": "^5.0.0-rc.5-next"

У меня нет этого в файле packages.json:

"@ firebase / app"

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