标签: angularfire2

Firestore如何clearPersistence()

用户注销后,我需要完全清除当前用户数据。因此我使用clearPersistence()函数。它需要在clearPersistence()之前运行terminate()。

 this.afs.firestore.terminate().then(() => {
      this.afs.firestore.clearPersistence().then(() => {
      });
});
Run Code Online (Sandbox Code Playgroud)

在上面运行以下命令以清除 firestore 本地缓存后,我收到此错误。

FirebaseError: The client has already been terminated.

有什么建议如何重新初始化 firestore 实例或有更好的方法来实现吗?谢谢。

javascript firebase angularfire2 google-cloud-firestore

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

将 @angular/fire 从 6.x 升级到 7.x

我正在尝试将我的应用程序依赖项和代码从 @angular/fire 6.x 升级到 7.1.0-rc4 (因为我需要 7.0.x 中不存在的功能),所以我编辑了我的package.json

"@angular/fire": "~7.1.0-rc.4",
"firebase": "^9.0.0",
Run Code Online (Sandbox Code Playgroud)

然后我改变了我的进口:

import { AngularFirestore } from '@angular/fire';
Run Code Online (Sandbox Code Playgroud)

import { AngularFirestore } from '@angular/fire/compat';
Run Code Online (Sandbox Code Playgroud)

我的应用程序是 Ionic5/Angular12 应用程序,所以我假设它默认使用 Ivy。看着这里,在我看来,我已经完成了升级所需的一切。

但是我收到以下编译错误:

Module '"@angular/fire/compat"' has no exported member 'AngularFirestore'.ts(2305)
import AngularFirestore
Run Code Online (Sandbox Code Playgroud)

这是我的app.module.ts文件:

import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
import { APP_INITIALIZER, NgModule, Optional, PLATFORM_ID } from '@angular/core';
import { BrowserModule, BrowserTransferStateModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } …
Run Code Online (Sandbox Code Playgroud)

firebase typescript angularfire2 angular google-cloud-firestore

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

将 Angular/Fire 安装到 Angular 17 中

我有一个 Angular 17 应用程序,需要向其中添加 Angular/Fire(Angular Firebase 版本)。

当我尝试安装它时,npm install @angular/fire我遇到了依赖项错误npm ERR! Could not resolve dependency: npm ERR! peer @angular/common@"^16.0.0" from @angular/fire@16.0.0,因为新版本的 Angular Fire 尚未发布。

我偶然发现了这个线程 - https://github.com/angular/angularfire/issues/3459

我想知道如何将 Angular Fire 安装到 17 中?我应该使用下一个版本还是使用---force. 既然我们不再有 app.module.ts,那么它在哪里初始化呢?我曾经在 app.module.ts 中完成,但我认为它会在 app.config.ts 或 main 中完成?

firebase angularfire2 angular

1
推荐指数
2
解决办法
4565
查看次数

Angularfire2 - 直接将项目附加到列表

当我push("number")进入firebase时,使用angularfire2,数字不会直接附加,而是嵌套在生成的代码中.

Firebase实时数据库内部:

1)初始代码:

  "myList": {
    "0": {
      "key1": "val1"
    },
    "1": {
      "key2": "val2"
    }
  }
Run Code Online (Sandbox Code Playgroud)

2)之后 .push({"key3": "val3"})

  "myList": {
    "0": {
      "key1": "val1"
    },
    "1": {
      "key2": "val2"
    },
    "-generatedcode_": {
      "key3": "val3"
    }
  }
Run Code Online (Sandbox Code Playgroud)

为什么没有嵌套时没有直接添加新对象?

json firebase firebase-realtime-database angularfire2

0
推荐指数
1
解决办法
1166
查看次数

Angular2 - EXCEPTION:无法读取未定义的属性'af'

我正在构建一个Angular2应用程序,使用Auth0进行身份验证,使用AngularFire进行数据库.在我的构造函数中,我传递了我的AngularFire af实例,但我无法在回调事件中访问它.有没有其他方法可以访问我的AngularFire实例?

// app/auth.service.ts

import { Injectable } from '@angular/core';
import { tokenNotExpired } from 'angular2-jwt';
import { AngularFire, AuthMethods, AuthProviders } from 'angularfire2';


// Avoid name not found warnings
declare var Auth0Lock: any;
declare var Auth0: any;

@Injectable()
export class Auth {
 // Configure Auth0
  lock = new Auth0Lock('AUTH0_CLIENT_ID', 'AUTH0_DOMAIN', {});


  constructor(private af: AngularFire) {
    // Add callback for lock `authenticated` event

    this.lock.on("authenticated", (authResult) => {
      this.lock.getProfile(authResult.idToken, function(error:any, profile:any){
        if(error){
          throw new Error(error);
        }

        localStorage.setItem('id_token', authResult.idToken);
        localStorage.setItem('profile', JSON.stringify(profile));

        var …
Run Code Online (Sandbox Code Playgroud)

firebase auth0 angularfire2 angular

0
推荐指数
1
解决办法
200
查看次数

AngularFire2检索数据快照

现在,我正在使用文档中描述的方法展开我的数据.但是,文档说明:

AngularFire2默认情况下会解压缩Firebase DataSnapshot,但您可以通过指定preserveSnapshot选项将数据作为原始快照获取.

如何在item不手动解包数据快照的情况下访问"默认"解包功能(读取:访问元素)?

我的Firebase数据如下所示:

{
  testObj : {
    firstName: "beckah",
    lastName: "s"
  }
}
Run Code Online (Sandbox Code Playgroud)

我的代码(有效)是:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  item: FirebaseObjectObservable<any>;
  constructor( public navCtrl: NavController,
              public db: AngularFireDatabase ) {
    this.item = db.object('/testObj', { preserveSnapshot: true });
    this.item.subscribe(snapshot => {
      console.log(snapshot.val())
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

哪个输出

Object {firstName: "beckah", lastName: …
Run Code Online (Sandbox Code Playgroud)

firebase ionic2 angularfire2 angular

0
推荐指数
1
解决办法
7393
查看次数

错误TS2345 Angular AngularFire2检查用户是否为admin

尝试使用最新版本的Firebase和Angular.我想要实现的总体概念是管理员身份验证.我已经实现了登录注销功能.我已使用UID将googleAuth登录用户保存到数据库.现在我要做的是将一些页面限制为登录和管理员.所以我已经将isAdmin:true指定为存储在数据库中的用户对象中的值.基本上我想查看用户是否为admin并为路由器参数返回true或false.我一直在使用Angular和Firebase.我认为自己是初学者.我不太明白如何从AngularFire2 4 - > AngularFire 5迁移.我得到的当前错误是TS2345:

ERROR in src/app/admin-auth-guard.service.ts(15,38): error TS2345: Argument of type '(user: User) => AngularFireObject<AppUser>' is not assignable to parameter of type '(value: User, index: number) => ObservableInput<{}>'.
  Type 'AngularFireObject<AppUser>' is not assignable to type 'ObservableInput<{}>'.
    Type 'AngularFireObject<AppUser>' is not assignable to type 'ArrayLike<{}>'.
      Property 'length' is missing in type 'AngularFireObject<AppUser>'.
Run Code Online (Sandbox Code Playgroud)

从我认为我理解get函数返回一个Object,但错误是期望一个可观察的.我所知道的关于可观察物的是你可以订阅它们而你应该销毁它们......

我需要使用当前登录的用户ID来查询数据库并返回与uid匹配的用户对象,然后检查isAdmin是true还是false.然后将其返回到路径参数,以便我可以将页面限制为Authenticated和Admin.

请指出我正确的方向.

管理员认证 - guard.service.ts

import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { AuthService } from './auth.service';
import { …
Run Code Online (Sandbox Code Playgroud)

angularfire2 angular

0
推荐指数
1
解决办法
2102
查看次数

Ionic中的AngularFireDatabaseModule和AngularFireDatabase有什么区别?

根据Angularfire2 Docs的说法: AngularFireDatabase允许您使用Firebase的原始数据库Realtime Database。对于需要跨客户端实时同步状态的移动应用程序而言,这是一种高效,低延迟的解决方案。

但是,有AngularFireDatabaseModule,我不知道它是什么。因此,我想更详细地了解这两个(如果可用,请提供更详细的链接)以及何时使用AngularFireDatabaseAngularFireDatabaseModule

cordova ionic-framework angularfire2 ionic3

0
推荐指数
1
解决办法
1624
查看次数

Angular/Firebase - "UserCredential"类型中不存在"电子邮件"属性

import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { User } from './../classes/user';
import { AlertService } from './alert.service';
import { Alert } from './../classes/alert';
import { AlertType } from './../enums/alert-type.enum';
import { Observable } from 'rxjs';
import 'rxjs/add/Observable/of';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFirestore, AngularFirestoreDocument } from 'angularfire2/firestore';
import 'rxjs/add/operator/switchMap';
import { from } from 'rxjs';
import 'rxjs/add/observable/fromPromise';
import { AngularFireAuthModule } from 'angularfire2/auth';


@Injectable({
  providedIn: 'root'

})
export class AuthService …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-authentication angularfire2 angular

0
推荐指数
1
解决办法
2185
查看次数

Firebase查询下载整个数据库.为什么?

我尝试下载并仅显示实时数据库中的特定数据.我有以下代码:

getUserPlatformIos() {
    this.dataRef = this.afDatabase.list('data/users', ref => ref.orderByChild('meta/platform').equalTo('ios'));
      this.data = this.dataRef.snapshotChanges().map(changes => {
        return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
      });
      return this.data;
  }
Run Code Online (Sandbox Code Playgroud)

我的firebase数据库结构 在此输入图像描述

Firebase规则 在此输入图像描述

为什么firebase会在我之前查询时下载整个数据库?这导致非常长的加载时间和大量下载的数据....

firebase ionic-framework firebase-realtime-database angularfire2 ionic3

0
推荐指数
1
解决办法
163
查看次数