标签: angularfire

获取.read和.write安全规则为组工作

我在编写用于构建基于团队的协作平台的安全规则时遇到困难.

  1. 当用户注册时,他们应该能够创建一个团队并邀请用户加入该团队.
  2. 项目应归团队所有.
  3. 只有该团队中的用户才能查看该项目.
  4. 用户应该只看到他们所属的团队.

如何编写.read安全规则,以便用户只能看到他们所在团队的信息?

我应该只列出两个队,因为我属于他们github:8272012.

现行安全规则:

{
    "rules": {
        ".read": true, 
        "users": {
          "$user": {
            //can add a message if authenticated
            ".write": "auth.uid === $user" 
          }
        }, 
        "teams": {
            "$team": {
                "users": {
                    // can write to the users list only if ADMINISTRATOR
                    "$user": {
                        ".write":"newData.parent().child(auth.uid).val() === 99"
                    }
                }
            }
        },
        "projects": {
          "$team": {
            "$project": { 
                //can add a message if they are a MEMBER
                ".write": "(!data.exists() && newData.exists() && root.child('teams/' + $team + '/users/' + …
Run Code Online (Sandbox Code Playgroud)

firebase angularfire

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

找不到模块'@ firebase/app-types/private' - Firebase抛出错误

我正在使用angular和firebase进行应用程序.我按照现场给出的说明安装了firebase,版本如下,

"angularfire2": "^5.0.0-rc.4",
"firebase": "^4.8.1",
Run Code Online (Sandbox Code Playgroud)

但是出现以下错误

node_modules/@firebase/database/dist/esm/src/api/Database.d.ts(4,33)中的错误:错误TS2307:找不到模块'@ firebase/app-types/private'.node_modules/@firebase/database/dist/esm/src/core/AuthTokenProvider.d.ts(1733):错误TS2307:找不到模块'@ firebase/app-types/private'.

npm firebase angularfire angularfire2 angular

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

使用angularFire隐式同步访问ng-repeat中的Firebase唯一ID

我有一个使用angularFire隐式数据同步的Firebase对象列表,我想使用其他数据属性呈现它们的唯一ID(用于url)ng-repeat.我可以angularFire以这样一种方式返回,即我可以访问其中的对象ID ng-repeat,就像angularFireCollection拥有$id属性的成员一样吗?如果没有,那么实现这一目标的正确方法是什么?假设代码(不起作用):

控制器:

myApp.controller('ItemListCtrl', ['$scope', 'angularFire',
  function ItemListCtrl($scope, angularFire) {
    var ref = new Firebase(firebaseUrl);
    angularFire(ref, $scope, 'items');
  }
]);
Run Code Online (Sandbox Code Playgroud)

视图:

<div ng-repeat="item in items" >
  <a href="" ng-href="#/items/{{item.name()}}">{{item.text}}</a>
</div>
Run Code Online (Sandbox Code Playgroud)

angularjs firebase angularfire

11
推荐指数
2
解决办法
6520
查看次数

如何查看电子邮件是否已在Firebase简单登录中注册?

我正在使用firebase(使用Angularfire)来获取html5手机应用程序.用户仅在开始屏幕中输入他们的电子邮件,然后,根据该电子邮件是否已经注册,用户分别被重定向到登录或注册页面.对于step1,我们如何查询firebase简单登录以确定电子邮件是否已注册?

html5 firebase firebase-security angularfire

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

在扩展firebase工厂以运行getTotal()函数时,我可以使用$$更新吗?

我是否可以收到$$更新返回的内容或者已更新$$运行一个函数,我可以在每次检查任务时收到该函数?

在一天结束时,我需要计算用户完成的任务数量.似乎firebase有自动同步数据的方法,但目前还不清楚具体如何做到这一点.当任务完成时,我遇到了$ watch和running函数的问题.这看起来像一个有趣的方式,但我不能把这些碎片放在一起.

以下是代码的plnkr:http://plnkr.co/edit/iAGvPHFWn2GSPGzBRpKh?p = preview

// Code goes here
angular.module('app', ['firebase']);

angular
  .module('app')
  .controller('main', function($scope, $firebase, $timeout, $window, ListWithTotal) {

  var ref = new Firebase("https://plnkr.firebaseio.com");
  $scope.listWithTotal = ListWithTotal(ref);

  $scope.addTask = function(task) {  
    $scope.listWithTotal.$add({
      title: task.title,
      complete: false,  
      tally: 0  
    });
    task.title = ''; 
  };

  $scope.completeTask = function(task) {  
    if (task.complete === true) {
      task.complete = true;
      task.tally = 1;
    } else { 
      task.complete = false;
      task.tally = 0;
    }
    $scope.listWithTotal.$save(task);
  };

  $scope.tallyCount = '';
  //it would be …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs firebase angularfire

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

为什么要使用angularfire $ destroy()?

在Angularfire中存在$ destroy()的原因是什么?

angularfire sais的文档:

https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebasearray-destroy

停止侦听此阵列使用的事件和可用内存(清空本地副本).更改不再与Firebase同步或从Firebase同步.

sync = $firebase(ref).$asArray();
...
....
sync.$destroy()
Run Code Online (Sandbox Code Playgroud)

我不能这样做:

sync = null
Run Code Online (Sandbox Code Playgroud)

要么

delete sync
Run Code Online (Sandbox Code Playgroud)

或者我应该因为某种原因真的使用$ destroy()吗?

angularfire

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

检索firebase数组中项目列表的相关项列表

我想获取firebase中的项目列表,但项目的每个元素都有一个相关项目列表.我无法获得列表,既没有使用firebase-util也没有使用firebase数组扩展功能.

我的firebase数据看起来像这样:

items
    item1
        name: "Item 1"
        user: user1
        images
           image1: true
           image2: true
    item2
        name: "Item 2"
        user: user1
        images:
            image3: true
            image4: true
    item3
        name: "Item 3"
        user: user2
        images:
            image5: true
            image6: true

users
    user1
        name: "User 1"
        email: "user1@email.com"
    user2
        name: "User 2"
        email: "user2@email.com"

images
    image1
        image: "data:image/jpeg;base64,/9j/..."
        thumb: "data:image/jpeg;base64,/9j/..."
    image2
        image: "data:image/jpeg;base64,/9j/..."
        thumb: "data:image/jpeg;base64,/9j/..."
    image3
        image: "data:image/jpeg;base64,/9j/..."
        thumb: "data:image/jpeg;base64,/9j/..."
    image4
        image: "data:image/jpeg;base64,/9j/..."
        thumb: "data:image/jpeg;base64,/9j/..."
    image5
        image: "data:image/jpeg;base64,/9j/..."
        thumb: "data:image/jpeg;base64,/9j/..."
Run Code Online (Sandbox Code Playgroud)

我只想获得包含所有数据的项目列表.就像是: …

javascript angularjs firebase angularfire firebase-util

11
推荐指数
2
解决办法
674
查看次数

在$ onAuthStateChanged上查找正确的Firebase Auth id_token

我目前使用的Angular 1.5.8,Firebase 3.3.0AngularFire 2.0.2.当我调用时$firebaseAuth.$signInWithPopup,promise会返回一个包含的firebase用户firebase.user.idToken,但是当我调用时$onAuthStateChanged,firebase用户不会返回.user属性.从$ onAuthStateChanged函数用于服务器身份验证的正确令牌是什么?

我正在使用该md属性,但随后它停止工作并切换到kd属性,我意识到并非每个用户都有.这是_lat财产吗?它似乎以这种方式工作,但我似乎无法找到任何有关它的文档.或者这不是在Auth State Change上使用令牌的正确方法吗?有最好的做法吗?这是我从承诺中返回的对象.

在此输入图像描述

我为图像道歉,但奇怪的是,如果我JSON.stringify(firebaseUser)并打印它,我最终得到一个完全不同的对象,在那里firebaseUser.stsTokenManager.accessToken会给我正确的密钥,但如果我尝试firebaseUser.stsTokenManager.accessToken它说这stsTokenManager是未定义的.

{
  "uid": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
  "displayName": "Luke Schlangen",
  "photoURL": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
  "email": "XXXXXXXXXXXXXXXXXX@XXXXX.com",
  "emailVerified": true,
  "isAnonymous": false,
  "providerData": [
    {
      "uid": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "Luke Schlangen",
      "photoURL": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
      "email": "XXXXXXXXXXXXXXXXXX@XXXXX.com",
      "providerId": "google.com"
    }
  ],
  "apiKey": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
  "appName": "[DEFAULT]",
  "authDomain": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
  "stsTokenManager": {
    "apiKey": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
    "refreshToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
    "accessToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
    "expirationTime": …
Run Code Online (Sandbox Code Playgroud)

firebase angularfire firebase-authentication

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

TS2570 错误协助:“Promise&lt;User&gt;”类型上不存在属性“sendEmailVerification”。您是否忘记使用“等待”?

我正在尝试在我的 Ionic Angular 项目上设置 Firebase。我正在使用链接教程https://www.positronx.io/ionic-firebase-authentication-tutorial-with-examples/来做到这一点。

我不断收到 TS2570 错误:

'Promise' 类型不存在属性 'sendEmailVerification'。您是否忘记使用“等待”?

我附上了我的代码。我唯一改变的主要事情是 AngularFire 改变了 6.0.0 中使用 auth 的方式

import { Injectable, NgZone } from '@angular/core';
import { auth } from 'firebase/app';
import { User } from "./user";
import { Router } from "@angular/router";
import { AngularFireAuth } from "@angular/fire/auth";
import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';

@Injectable({
  providedIn: 'root'
})

export class AuthenticationService {
  userData: any;

  constructor(
    public afStore: AngularFirestore,
    public ngFireAuth: AngularFireAuth,
    public router: Router,
    public ngZone: …
Run Code Online (Sandbox Code Playgroud)

firebase typescript angularfire ionic-framework angular

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

'unknown[]' 类型的参数不可分配给 &gt; 'OperatorFunction 类型的参数

组件.ts

initialize()方法说

“unknown[]”类型的参数不可分配给“OperatorFunction<unknown[],unknown>”类型的参数。类型“unknown[]”与签名“(source: Observable<unknown[]>): Observable”不匹配

alertsChanged$: Observable<AlertModel[]>;

private initialize(): void {
  

    this.alertsChanged$ = this.alertsService.getAlerts().pipe(
      map((res) => res), // here it returns the above error
      tap((res) => {
        
        this.setDataForFilters(res); //Argument of type 'unknown' is not assignable to parameter of type 'AlertModel[]'.  
       
      }),          
    );
  }

 private setDataForFilters(alerts: AlertModel[]): void {}
Run Code Online (Sandbox Code Playgroud)

服务.ts

 // no issues here

 getAlerts(): Observable<AlertModel[]> {
      return this.angularFireDatabase
      .list<AlertModel>(`groups/${this.groupId}/alerts`)
      .valueChanges()
      .pipe(
        map((res) => orderBy(res, ['timeStamp'], ['desc'])),
        first()
      );
  }
Run Code Online (Sandbox Code Playgroud)

.html

 <app-alerts
    [alerts]="alertsChanged$ | async"
  ></app-alerts>
Run Code Online (Sandbox Code Playgroud)

请让我把问题放在这里?

rxjs typescript angularfire ionic-framework angular

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