【发布时间】:2017-10-19 13:47:52
【问题描述】:
我在使用 firebase 的“firestore”服务的 ionic2 项目上工作时遇到了这个问题。
我有一个 osservable 可以使用异步管道从模板中的 firestore 获取一些数据。 此端点上的规则仅向登录用户授予读写访问权限。 当我退出时,我会重定向到登录页面。
..现在问题来了..
当我登陆登录页面时,几秒钟后,跳出IonicErrorHandler,通知我权限不足。
所以; 我如何告诉 Firestore osservable; “嘿,伙计,别说了,如果有人再次登录,我稍后会打电话给你”
(我会在signOut之前尝试取消订阅()但不起作用,而且
它不是来自持久性)
重述:
当我退出时
this.afAuth.auth.signOut();
错误:
core.es5.js:1020 ERROR Error: Missing or insufficient permissions.
at new FirestoreError (error.js:164)
at JsonProtoSerializer.fromRpcStatus (serializer.js:126)
at JsonProtoSerializer.fromWatchChange (serializer.js:517)
at PersistentListenStream.onMessage (persistent_stream.js:334)
at persistent_stream.js:270
at persistent_stream.js:247
at async_queue.js:81
at t.invoke (polyfills.js:3)
at Object.onInvoke (core.es5.js:3890)
at t.invoke (polyfills.js:3)
(准确地说,我收到了 3 次。确切地说是集合中的文档数量)
我调用 firestore 端点的服务:
export interface Attivita {
id: string;
committente: string;
durata: number;
nome: string;
progetto: string;
userId: string;
}
@Injectable()
export class FirebaseService {
attivitaCollectionRef: AngularFirestoreCollection<Attivita>;
attivita$: Observable<Attivita[]>;
constructor(private afs: AngularFirestore,
public afAuth: AngularFireAuth ) {
}
setOsservableAttivita(uId){
this.attivitaCollectionRef = this.afs.collection('attivita', ref => {
return ref.where("userId", "==", uId)
});
this.attivita$ = this.attivitaCollectionRef.snapshotChanges().map(actions => {
return actions.map(action => {
console.log(action)
const data = action.payload.doc.data() as Attivita;
const id = action.payload.doc.id;
return { id, ...data };
});
});
}
}
tks 提前帮助我理解它 :)
【问题讨论】:
-
您解决了这个问题吗?我也遇到了同样的问题
-
我已经在这个问题上停留了一周。希望有人能帮帮我!
-
您是否调用了登录页面中的任何集合?
-
unsubscribe()不会是这里的问题。当您使用异步管道从模板中的 firestore 调用数据时,它会自动处理取消订阅。
标签: firebase ionic2 google-cloud-firestore