我正在尝试使用angularfire构建一个ng2应用程序.在快速入门之后,我收到以下错误:
cannot find namespace 'firebase'
Run Code Online (Sandbox Code Playgroud)
似乎是打字的东西,虽然安装了所有这些.有关这个问题的任何想法?
在AngularFire中,您可以为经过身份验证的用户访问提供程序(例如Google)accessToken.
似乎没有办法通过AngularFire2访问它?
初次登录时请说如下:
this.af.auth.subscribe(user=> {
if (user) {
console.log(user.google);
}
});
Run Code Online (Sandbox Code Playgroud)
它将注销idToken,accessToken,提供者,但是(在页面刷新时)随后将注销标准细节(uid,displayName等....)而accessToken不是可访问的属性?
有没有办法访问当前用户accessToken?
目前我正在使用:
this.af.database.list('users').push(user);
Run Code Online (Sandbox Code Playgroud)
如何使提交的对象的键是自定义的.所以我希望能够将此对象的节点设置为注册用户的同一个uid.我有权访问此ID我只需要能够知道如何使自定义用户对象节点在推送时不是自动生成的ID.
谢谢
我试图在我的模板中使用一个observable:
<md-nav-list>
<a md-list-item *ngIf="!isAuth() | async" [routerLink]="['login']" (click)="sidenav.toggle()">Login</a>
<a md-list-item *ngIf="isAuth() | async" (click)="logout()" (click)="sidenav.toggle()">Logout</a>
</md-nav-list>
Run Code Online (Sandbox Code Playgroud)
在我的模块中:
isAuth(): Observable<boolean> {
return this.loginservice.getAuthenticated()
.map(user => { if(user){
if(user.hasOwnProperty('uid')){
return true;
} else {
return false;
}
} else {
return false;
}
})
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题:
如果我登录并且observable返回true - >很酷我的菜单项出现
但如果observable返回false - >我的菜单是空的 - >什么是错的?
我正在尝试按照 github 上 angularfire2 文档中的指南进行操作,但是当我尝试打开用于 google 登录的弹出窗口时,它会立即关闭。
我试过不同的浏览器,但我不知道发生了什么。
这是我的表单组件的 HTML:
<div class="container " >
<h2 class="date">Wallet manager</h2>
<h1>SUBBO</h1>
<form>
<div class="form-group">
<label class="date" for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label class="date" for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<button type="submit" (click)="login()" style="margin-top:20px" class="btn btn-outline-warning">Login</button>
<button type="submit" (click)="logout()" style="margin-top:20px" class="btn btn-outline-warning">Logout</button>
</form>
</div>Run Code Online (Sandbox Code Playgroud)
这是代码:
import { Component, OnInit } from '@angular/core';
import { AngularFireAuth …Run Code Online (Sandbox Code Playgroud) 我正在Firestore中实现一个食谱书,其中每个用户都能够看到所有用户创建的所有食谱,但只允许食谱的原始作者编辑或删除食谱.任何用户也可以创建新配方.
我的问题是我无法在子集合父文档的字段上设置子集的权限以"监听".
每个食谱文档包含三件事.称为一个字段name存储配方的名称,其中,一个叫场creatorUID,其中request.auth.uid创作者的UID的存储和一个叫做子集合ingredients包含一些随机域的文档.
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /ListOfRecipes/{recipe} {
allow read, create: if isSignedIn();
allow update, delete: if resource.data.creatorUID == request.auth.uid;
match /{list=**} {
allow read: if isSignedIn();
// Should return true if recipe.creatorUID has same value as request.auth.uid
allow write: if recipe.creatorUID == request.auth.uid;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,使用这些规则它只能用于创建配方文档.db表示,子集合及其文档不会创建
FirebaseError:[code = permission-denied]:权限丢失或不足.FirebaseError:权限丢失或不足.
这些调用来自Angular客户端及其官方库.
firebase firebase-security angularfire2 google-cloud-firestore
通过运行离子服务,我得到以下错误:
Property 'accessToken' does not exist on type 'AuthCredential'.
// You can use it to access the Google API.
let token = result.credential.accessToken;
Run Code Online (Sandbox Code Playgroud)
我的火力基地已从更新firebase: ^4.12.1为firebase: ^5.5.9
这是我的离子信息输出
Ionic:
ionic (Ionic CLI) : 4.1.2
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.1.9
Cordova:
cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
Cordova Platforms : android 7.0.0
Cordova Plugins : no whitelisted plugins (19 plugins total)
System:
NodeJS : v10.13.0 (C:\Program Files\nodejs\node.exe)
npm : 5.8.0
OS : Windows 10
Run Code Online (Sandbox Code Playgroud)
这是 auth.service.ts …
我有一个 javascript 对象数组,如下所示。
jsObjFromCsv =
[
{
"J251525" : {
"APPROVER" : "TOM@MAIL.COM",
"JOB DESCRIPTION " : "CLEAN THE HOUSE",
"JOB NUMBER" : "J251525"
}
}, {
"J512912" : {
"APPROVER" : "JAMES@MAIL.COM",
"JOB DESCRIPTION " : "BRUSH HORSE",
"JOB NUMBER" : "J512912"
}
}, {
"J5-512" : {
"APPROVER" : "HARRY@MAIL.COM",
"JOB DESCRIPTION " : "WASH CAR",
"JOB NUMBER" : "J5-512"
}
}
]
Run Code Online (Sandbox Code Playgroud)
但是,当我使用以下代码保存到 firebase 时,它看起来像这样
saveJobToFirebase(jobs: Array<Object>) {
const jobCodesRef = this.af.database.list('/jobCodes/' + this.currentUser.company)
return jobCodesRef.push(jobs);
} …Run Code Online (Sandbox Code Playgroud) javascript firebase firebase-realtime-database angularfire2 angular
当我从一个集合中获取多个文档时,结果只是一个包含每个文档数据的数组。
firestore.collection("categories").valueChanges().subscribe(data => {
console.log(data);
// result will be: [{…}, {…}, {…}]
};
Run Code Online (Sandbox Code Playgroud)
如何获取每个文档的名称?
理想的结果如下所示:
{"docname1": {…}, "docname2": {…}, "docname3": {…}}
Run Code Online (Sandbox Code Playgroud) 使用 angularfire2 处理 Angular5 应用程序。我有一个包含大量项目的列表。当我使用以下方法订阅它时:
this.db.list("/list").valueChanges().subscribe(data => { .. });
Run Code Online (Sandbox Code Playgroud)
我按预期在数据中获取列表的所有子项。当我现在更改 Firebase 后端中的单个项目时,回调然后再次接收所有子项的整个列表。
如何订阅仅接收数据中列表的受影响项目?
还是因为 angularfire2 在内部处理列表的状态并且只将受影响的项目从服务器传输到应用程序而无关紧要?我的目标是最小化连接流量。
提前致谢 :)