我在编写用于构建基于团队的协作平台的安全规则时遇到困难.
如何编写.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) 我正在使用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'.
我有一个使用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) 我正在使用firebase(使用Angularfire)来获取html5手机应用程序.用户仅在开始屏幕中输入他们的电子邮件,然后,根据该电子邮件是否已经注册,用户分别被重定向到登录或注册页面.对于step1,我们如何查询firebase简单登录以确定电子邮件是否已注册?
我是否可以收到$$更新返回的内容或者已更新$$运行一个函数,我可以在每次检查任务时收到该函数?
在一天结束时,我需要计算用户完成的任务数量.似乎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) 在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()吗?
我想获取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)
我只想获得包含所有数据的项目列表.就像是: …
我目前使用的Angular 1.5.8,Firebase 3.3.0和AngularFire 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) 我正在尝试在我的 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) 组件.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)
请让我把问题放在这里?
angularfire ×10
firebase ×8
angular ×3
angularjs ×3
javascript ×2
typescript ×2
angularfire2 ×1
html5 ×1
npm ×1
rxjs ×1