标签: angularfire2

在 AngularFireAuth 中获取当前用户

如何获取登录用户?

我这样做: console.log('登录...'); this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password);

但是文档并不清楚如何让用户进入代码。它们在模板中显示了一种方式,但我需要存储当前用户。

firebase firebase-authentication angularfire2 google-cloud-firestore

5
推荐指数
2
解决办法
7981
查看次数

订阅一个 AngularFireObject

我刚刚升级到 AngularFire2 rc 5.0。

我修改了我的代码,使其与新类型和功能相匹配,但是在尝试订阅 a 时出现以下错误.object(path):

Property 'subscribe' does not exist on type 'AngularFireObject'
Run Code Online (Sandbox Code Playgroud)

我的代码如下。

供应商:

getEvent(id: string): AngularFireObject<any> {
    let path = `/events/${id}`;
    return this.af.object(path).valueChanges();
  }
Run Code Online (Sandbox Code Playgroud)

页:

...
event$: AngularFireObject<any>;
...

// Retrieve event's info
this.event$ = this.eventService.getEvent(this.id);

// Retrieve event's ownership info
let subscription = this.event$.subscribe(event => {
  this.owner$ = this.userService.getUserPublicInfo(event.owner);
});
Run Code Online (Sandbox Code Playgroud)

任何的想法?

observable ionic-framework angularfire2 angular angularfire5

5
推荐指数
1
解决办法
3048
查看次数

Firebase 在 angularfire2 中返回“app/bad-app-name”

在我的 Angular 应用程序中,Firebase 返回一个显示bad-app-name为代码的错误。我在 angular 应用程序中使用 angularfire2。

我已经仔细检查了 Firebase 配置,没问题,那么如何解决这个错误。

app.components.ts

import { Component, OnInit } from '@angular/core';
import { FormsModule, NgForm } from "@angular/forms";
import { AngularFireDatabase } from "angularfire2/database";
import { Router } from '@angular/router';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent{
  isLoggedIn: boolean = false;
  courses: any[];
  constructor(public db: AngularFireDatabase) {
    db.list('/Courses').valueChanges().subscribe(courses => {
      this.courses = courses;
      console.log(this.courses);
    });
  }

  login() {
    this.isLoggedIn = !this.isLoggedIn;
  }
  user:any;
  saveData(formData) {
    if (formData.valid) …
Run Code Online (Sandbox Code Playgroud)

javascript firebase angularfire2 angular

5
推荐指数
1
解决办法
2074
查看次数

Firebase Storage getDownloadURL() 是可重用的,还是应该始终重新生成?

这是保存在数据库中并重用 angularfire2 返回的 urlgetDownloadURL()而不是getDownloadURL()每次需要显示来自 Firebase 存储的图像时执行的好做法吗?

如果我getDownloadURL()在组件中使用,则每次访问组件时都会重新加载图像。我想避免这种情况。如果我在上传图像后将 url 保存在我的数据库中,然后每次需要显示图像时都使用这个 url,这可以解决问题。但是,这可能不是正确的方法,Firebase 存储可能会在某个时候更新 url。

firebase firebase-storage angularfire2 angular

5
推荐指数
1
解决办法
685
查看次数

如何将 Angular 中的日期保存为 Firestore 的时间戳?

我正在尝试将具有出生日期和激活日期的人的个人信息保存到 Angular 的 Firestore 数据库中;

但是,传递带有Date()类型字段的对象,日期将保存为字符串:

this.treatment.activationDate = new Date();
// gives such result in firestore with string type
// activationDate: "2018-11-16T09:48:51.137Z"
Run Code Online (Sandbox Code Playgroud)

还尝试使用服务器时间戳,但以下方法未返回有效值:

firebase.firestore.FieldValue.serverTimestamp()
Run Code Online (Sandbox Code Playgroud)

结果在 Firestore(不允许上传图片抱歉:)):

activationDate: (map)
     _methodName: FieldValue.serverTimestamp 
Run Code Online (Sandbox Code Playgroud)

但是,此方法无法为我提供自定义日期的时间戳(例如birthDate) 那么使用angular 在firestore 中将日期保存为时间戳对象的最佳方法是什么?

.....
import  * as firebase from 'firebase';
.....
export class AddPatientComponent implements OnInit { 
......

this.treatment.activationDate = new Date();
  //firebase.firestore.FieldValue.serverTimestamp();
  console.log("timestamp: ", this.treatment.activationDate,                  firebase.firestore.FieldValue.serverTimestamp()); 
  this.patientService.savePatient(this.patient, this.treatment,   this.courseMeds);
Run Code Online (Sandbox Code Playgroud)

还有一个模型:

export class CourseMed{
  amountPerDay: number;
  atc: String;
  name: String;
  days: number;
  dosage: number;
  form: …
Run Code Online (Sandbox Code Playgroud)

javascript firebase angularfire2 angular google-cloud-firestore

5
推荐指数
1
解决办法
6951
查看次数

Firebase 更新嵌套数组内的对象

在 Firestore 中,我有一个具有数组类型属性(名为“items”)的文档。该数组包含ShoppingItem具有以下结构的对象:

export class ShoppingItem {
 id?: string; 
 name: string;
 checked = false;
}
Run Code Online (Sandbox Code Playgroud)

为了完成起见,在文档结构下方:

export interface ShoppingList {
 id: string;
 name?: string;
 items: ShoppingItem[]; // <-- This is the array property I am updating
}  
Run Code Online (Sandbox Code Playgroud)

从用户界面,用户可以更新checked对象的属性,我想相应地更新数据库。我从 Firebase 文档中读到,我们可以使用它arrayRemove/arrayUnion以原子方式删除/添加数组项。

为了更新现有项目,我是否必须删除旧对象并每次添加新对象(嵌套承诺),如下所示?或者有可能以更优雅的方式?

updateItem(listId: string, item: ShoppingItem) {
  const docRef = this.db.collection("list").doc(listId)

  return docref.update({ items: firestore.FieldValue.arrayRemove(item) })
    .then(() => {
    {
      docRef.update({ items: firestore.FieldValue.arrayUnion(item) });
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

在数组中删除和添加项目的另一个缺点是更新的元素在 UI 中闪烁。

javascript angularfire2 angular google-cloud-firestore

5
推荐指数
1
解决办法
1068
查看次数

当我尝试添加 angular/fire@next 时,Angular 显示错误

每当我尝试添加时都显示错误

ng add angular/fire@next
Run Code Online (Sandbox Code Playgroud)

使用命令行界面

编译@angular/fire : main 作为 umd

编译@angular/fire : 模块为 esm5

编译@angular/fire/auth : es2015 为 esm2015

编译 @angular/fire/auth : main as umd

编译 @angular/fire/auth : 模块为 esm5

编译@angular/fire/auth-guard : es2015 为 esm2015

编译@angular/fire/auth-guard : main as umd

编译 @angular/fire/auth-guard : 模块为 esm5

编译@angular/fire/database : es2015 为 esm2015

编译@angular/fire/database : main as umd

编译@angular/fire/database : 模块为 esm5

编译@angular/fire/database-deprecated : es2015 为 esm2015

编译@angular/fire/database-deprecated : main as umd

错误:试图用 ngcc 备份文件覆盖 E:/portfolio/node_modules/@angular/fire/bundles/database.umd.js.__ivy_ngcc_bak,这是不允许的。在 InPlaceFileWriter.writeFileAndBackup (E:\portfolio\node_modules@angular\compiler-cli\ngcc\src\writing\in_place_file_writer.js:36:23) 在 E:\portfolio\node_modules@angular\compiler-cli\ngcc\src\写入\in_place_file_writer.js:30:69 at Array.forEach () …

angularfire angularfire2 angular

5
推荐指数
0
解决办法
1448
查看次数

firebase firestore 以角度读取特定文档

我想使用 AngularFire 读取 Firebase Firestore 中的特定文档。

import { Component, OnInit } from '@angular/core'; 
import { ActivatedRoute } from '@angular/router';
import { AngularFirestore , AngularFirestoreCollection, AngularFirestoreDocument } from 'angularfire2/firestore';
import { Observable } from 'rxjs';
import { async } from 'q';

@Component({
  selector: 'app-read-more-page',
  templateUrl: './read-more-page.component.html',
  styleUrls: ['./read-more-page.component.scss']
})
export class ReadMorePageComponent implements OnInit {
  postCatagory: string;
  databaseName: any; 
  uuid: string;

  documentObject:any; //real docum

  //observables 
  items: Observable<any[]>;
  doc  : AngularFirestoreDocument<any>
  post : Observable<any>;

  constructor(private route: ActivatedRoute , private afs: AngularFirestore ) …
Run Code Online (Sandbox Code Playgroud)

javascript firebase angularfire2 angular google-cloud-firestore

5
推荐指数
1
解决办法
3910
查看次数

AngularFire 不会触发更改检测

我正在使用 AngularFire 和 Angular 8 来构建一个应用程序,但我有一个愚蠢的问题(我认为这实际上很愚蠢)。

我构建了一个简单的服务来包装AngularFireAuth:

import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { User } from 'firebase';
import { Subject } from 'rxjs';
import { MessageService } from 'primeng/api';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  private user: Subject<User> = new Subject();
  private isLoggedIn: Subject<boolean> = new Subject();

  constructor(private afAuth: AngularFireAuth, private messageService: MessageService) {
    this.afAuth.auth.onAuthStateChanged(user => {
      this.user.next(user);
      this.isLoggedIn.next(user !== null);
    });
  }

  isAuthenticated() {
    return this.isLoggedIn.asObservable();
  } …
Run Code Online (Sandbox Code Playgroud)

javascript rxjs firebase-authentication angularfire2 angular

5
推荐指数
1
解决办法
306
查看次数

部署 Angular Universal 应用程序时找不到模块“firebase/app”

我现在处理这个问题已经快两周了。我尝试了很多解决方法,但似乎没有一个有效。我已经安装angular-fire并安装firebase到它的最新版本,尝试过ng add @angular/fire,配置自定义webpack.config.ts,尝试回滚到每个建议的先前版本。没有人解决这个问题。

实际错误:

de-10@de10-LIFEBOOK-A555:~/Desktop$ node dist/server.js 
internal/modules/cjs/loader.js:797
    throw err;
    ^

Error: Cannot find module 'firebase/app'
Require stack:
- /home/de-10/Desktop/dist/server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15)
    at Function.Module._load (internal/modules/cjs/loader.js:687:27)
    at Module.require (internal/modules/cjs/loader.js:849:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/home/de-10/Desktop/dist/server.js:125276:18)
    at __webpack_require__ (/home/de-10/Desktop/dist/server.js:20:30)
    at Module.<anonymous> (/home/de-10/Desktop/dist/server.js:125199:70)
    at __webpack_require__ (/home/de-10/Desktop/dist/server.js:20:30)
    at Module.<anonymous> (/home/de-10/Desktop/dist/server.js:124984:78)
    at __webpack_require__ (/home/de-10/Desktop/dist/server.js:20:30) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/home/de-10/Desktop/dist/server.js' ]
}
Run Code Online (Sandbox Code Playgroud)

我不能放弃 Firebase 因为然后我面临:

ERROR in ../node_modules/@angular/fire/auth/auth.d.ts:4:28 - error TS2307: Cannot find module 'firebase/app'.

4 …
Run Code Online (Sandbox Code Playgroud)

firebase angularfire angularfire2 angular-universal

5
推荐指数
1
解决办法
966
查看次数