标签: angularfire

尚未使用 v7.0.1 和初始化 firebase 应用程序的新方法提供 AngularFireModule

我正在尝试使用新的 AngularFire API (>v7) 在集成测试中连接到 firebase 模拟器

import {
  TestBed
} from '@angular/core/testing';
import {
  initializeApp,
  provideFirebaseApp
} from '@angular/fire/app';
import {
  doc,
  enableIndexedDbPersistence,
  Firestore,
  getFirestore,
  provideFirestore,
  setDoc
} from '@angular/fire/firestore';
import {
  connectFirestoreEmulator
} from "firebase/firestore";

describe('FirestoreEmulatorSmoketest', () => {
  let projectId: string;
  let firestore: Firestore;

  beforeAll(() => {

    const testConfig = {
      projectId,
      auth: ...
    };
    TestBed.configureTestingModule({
      imports: [
        provideFirebaseApp(() => initializeApp(testConfig)),
        provideFirestore(() => {
          const firestore = getFirestore();
          connectFirestoreEmulator(firestore, 'localhost', 8080);
          enableIndexedDbPersistence(firestore);
          return firestore;
        }),
      ],
    }) …
Run Code Online (Sandbox Code Playgroud)

firebase angularfire

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

Angular 16 启用IndexedDbPersistence

我已经设法让 @angular/fire 在 Angular 独立应用程序中工作,但我正在尝试像过去一样打开离线功能,现在我看到它已enableIndexedDbPersistence被标记为已弃用。它建议如下:

该功能将在未来的主要版本中删除。相反,将 FirestoreSettings.cache 设置为 IndexedDbLocalCache 的实例以打开 IndexedDb 缓存。当 FirestoreSettings.cache 已指定时调用此函数将引发异常。

我已经阅读了通常可以很好地解释如何使用 @angular/fire 的文档(https://firebase.google.com/docs/firestore/manage-data/enable-offline),但我没有看到关于做什么的任何明显指示。文档显示了如何使用传递到调用中的选项参数initializeFirestore,但 Angular 应用程序似乎没有在外部使用此方法(从开发人员的角度来看)。

我目前拥有的是以下内容:

export const appConfig: ApplicationConfig = {
  providers: [
    provideRouter(routes),
    provideAnimations(),
    provideServiceWorker('ngsw-worker.js', {
      enabled: !isDevMode(),
      registrationStrategy: 'registerWhenStable:30000',
    }),
    importProvidersFrom(
      provideFirebaseApp(() => 
        initializeApp({
          // ... my info
        })
      ),
      provideAuth(() => getAuth()),
      provideFirestore(() => {
        const firestore = getFirestore();
        enableIndexedDbPersistence(firestore); // Marked as deprecated :(
        return firestore;
      }),
      provideStorage(() => getStorage())
    ),
  ],
};
Run Code Online (Sandbox Code Playgroud)

angularfire angularfire2 angular angularfire2-offline

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

angularjs:如何在路由更改之前进行身份验证

如何在angularjs app中路由更改之前等待身份验证完成.

我正在使用angularfire简单身份验证.

我的傻瓜在这里

您可以使用example@gmail.com示例作为凭证来测试plunker .

我知道问题的原因.但不知道如何解决它...

实际上,当经过身份验证的用户转到' #/ home /,在sahayiApp.run(function(){...})函数中时,会检查条件是否(next.authRequired &&!$ rootScope.user){...}.实际上,经过身份验证的用户可以通过此检查,但此代码在实际身份验证发生之前运行.那么在路由更改之前是否有任何方法进行身份验证...

angularjs firebase angular-routing angularfire

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

Firebase - 如何更新许多孩子而不删除AngularFire中的其他孩子

我想在firebase ref上使用update()来在一次操作中更新许多子节点.为此,我传递了带有值的对象进行更改.

这是console.log的输出(angular.toJson(change,1))

{
  "10": {
    "otherRubies": 30
  },
  "11": {
    "otherRubies": 30
  }
} 
Run Code Online (Sandbox Code Playgroud)

一开始我有:

在此输入图像描述 然后我做:

var refUsers = new Firebase(FBURL).child('users/');
refUsers.update(change);
Run Code Online (Sandbox Code Playgroud)

所以我希望:

在此输入图像描述

但不是我得到:

在此输入图像描述

有没有办法做到这一点?

angularjs firebase angularfire

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

CreateUser功能在AngularFire中不起作用 - Firebase简单登录?

我有以下使用AngularFire的控制器

app.controller("authController", function($scope, $firebaseSimpleLogin){

var ref = new Firebase("https://myapp.firebaseIO.com/");
$scope.auth = $firebaseSimpleLogin(ref, function(error, user){
    if(error){
        console.log(error);
    }
    else if(user){
        console.log(user);
    }
    else{
        console.log("user logged out");
    }
});

// This shows a valid object
console.log($scope.auth);

$scope.createAccount = function(){
    console.log("found me");
    $scope.auth.$createUser($scope.email, $scope.password, function(error, user){
        console.log("something");
        console.log(user);
        if(!error){
            console.log(user);
        }
        else{
            console.log(error);
        }
    });
};

});
Run Code Online (Sandbox Code Playgroud)

当我将$scope.createAccount函数绑定到一个ng-click事件并单击绑定按钮时,console.log("found me")在浏览器中运行,但是没有显示其他任何console.log命令$scope.createAccount.

console.log($scope.auth)设置$scope.createAccount函数之前的命令显示了一个$createUser定义了函数的有效对象.

我跑的时候没有收到任何控制台错误$scope.createAccount所以我假设电话已经"成功"完成.

为什么我能够看到auth对象,但在调用后没有收到回调$createUser

firebase angularfire firebasesimplelogin

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

Firebase/AngularFire中的数据建模最佳实践

我是第一次在Firebase中开发一个应用程序,并且很好奇我应该如何在两个对象a user和a 之间建模数据post.我来自更多的关系数据库背景,不仅好奇这是如何在非关系数据库中完成的,而且特别是如何在Firebase中设置两个对象之间的关系.

例如,我的应用程序有很多用户,每个用户创建许多帖子.

User {
    firstName: String,
    lastname: String,
    userName: String
}

Post {
    title: String,
    content: String,
    date: Date,
    writtenBy: [User object?]
}
Run Code Online (Sandbox Code Playgroud)

我应该如何在Firebase中构建这两个对象,以便帖子属于用户,但是无论用户如何都可以查询所有帖子,并且可以在不中断其他对象的数据和/或关系的情况下编辑用户和帖子对象?

我应该如何通过firebase创建新的"关系"对象:

sync.$set({userA: {
   firstname: "Billy",
   lastName: "Bob",
   userName: "BillyBob",
   Posts: {
       // .....
   }
}
});
Run Code Online (Sandbox Code Playgroud)

谢谢!

json nosql angularjs firebase angularfire

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

Firebase:$ save to Not Yet Created Object

我试图找出如何的结果保存serviceId到一个services叫上一个父对象provider1,当services对象是尚未建立.

我的Firebase数据如下所示:

"providers" : {
  "provider1" : {
    "name" : "The Whittington Hospital",
  }
}
Run Code Online (Sandbox Code Playgroud)

这就是我如何保存结果serviceId:

for (var providerKey in service.providers) {                       
  var providerId = providers.$getRecord(providerKey);             
  providerId.services[serviceId] = true;                          
  providers.$save(providerId);                                     
}
Run Code Online (Sandbox Code Playgroud)

但我无法设置[serviceId]true,因为services对象尚不存在,它是未定义的.

Firebase不允许你创建空对象,否则我的下面会有一个空的services: {}obj provider1.

我怎样才能解决这个问题.任何帮助表示赞赏.提前致谢!

javascript angularjs firebase angularfire

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

Firebase总用户数

有没有办法让所有用户都计入firebase?(通过密码,脸书,推特等进行身份验证)所有社交和电子邮件及密码验证用户的总数.

javascript angularjs firebase angularfire firebase-authentication

4
推荐指数
3
解决办法
6679
查看次数

Firebase push()vs Angularfire $ save()

angularfire.$ save()与firebase .push()相比如何?我知道push()将在存储数据时生成唯一键,但我无法使用angularfire重新创建行为.有没有办法或者我应该使用.push()如果是这样,在什么情况下你会使用$ save()?

这是我使用$ save()的一个示例...

        var fb = new Firebase(FIREBASE_URI).child('Test');
        var article = $firebaseObject(fb);

        article.Foo = "bar";
        article.$save().then(function(fb) {
            console.log(fb.key() === article.$id); // true
        }, function(error) {
            console.log("Error:", error);
        });
Run Code Online (Sandbox Code Playgroud)

另一个使用.push()......

        var article = new Firebase(FIREBASE_URI).child('Articles');

        article.push({
            title:   $scope.article.title,
            post:    $scope.article.post
        }, function(error) {
            if (error) {
                console.log("Error:", error);
            }
        });
Run Code Online (Sandbox Code Playgroud)

两者的优点/缺点和用例是什么?

javascript angularjs firebase angularfire

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

是否可以撤消Firebase列表?

我已经阅读了有关此问题的所有问题,但我仍然没有找到答案.所以不要将其标记为重复.

我正在使用AngularFire和Angular 2以及Typescript.我正在使用FirebaseListObservable从端点中提取24条最新记录的列表.这是我的代码:

import { Component } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';

@Component({
  selector: 'story-list',
  templateUrl: './story-list.component.html',
  styleUrls: ['./story-list.component.scss']
})
export class StoryListComponent {
  stories: FirebaseListObservable<any[]>;

  constructor(af: AngularFire) {
    this.stories = af.database.list('/stories', {
      query: {
        limitToLast: 24
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

这将按预期返回24个最新故事的列表,但是当我在页面上呈现它们时:

<p *ngFor="let story of stories | async">{{ story.title }}</p>
Run Code Online (Sandbox Code Playgroud)

它显示了最古老的故事,最新的故事在底部.我明白为什么会这样,而且我并没有声称这是一个问题,但我该如何扭转呢?我希望能够在查询中反转这一点,但如果这不可能,我会开放以某种方式在渲染中反转它.

无论您的答案是什么,请不要只链接到文档.没有AngularFire的文档可以完全解释这一点.我读过每一个字.请提供真实的工作代码.

但是,我绝对不会接受的一个解决方案是在创建时在记录中存储负数日期,然后根据该日期进行排序.这是我听过的最糟糕的解决方案,真正的数据库系统允许您在查询中执行此操作.所以请不要建议.

如果您有任何想法,我将不胜感激.我不想再使用其他产品,因为我喜欢Firebase.

javascript angularjs firebase angularfire firebase-realtime-database

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