从Firebase获取数据的惯例似乎是创建一个在内部使用AngularFire的服务类.然后,在您的应用程序的组件中,您可以注入并使用该服务.这使您可以在单元测试组件时轻松模拟服务.
但是,我仍然不清楚如何测试实际的服务本身.
举个例子,假设我todo list在Firebase中有一个节点,我有一个简单的服务来抓取所有的节点todos,如下所示:
import { Injectable } from '@angular/core';
import { AngularFire } from 'angularfire2';
@Injectable()
export class TodoService {
constructor(private af: AngularFire) { }
getAll(): FirebaseListObservable<any[]> {
return this.af.database.list('todos');
}
}
Run Code Online (Sandbox Code Playgroud)
您将如何测试此服务是否符合您的期望?
我有一个课程,我正在使用它保存到Firebase update().
是否可以阻止保存对象的某些字段(名称已知)保存到firebase db?
像transient在java中一样思考.
我的意思是不使用JS delete运算符.
javascript firebase typescript firebase-realtime-database angularfire2
所以,我最近更新到angularfire2的最新和最好的,并已遇到一些问题.我按照angularfire2开发人员指南安装项目,但仍然收到以下错误:
[18:57:50] ionic-app-script task: "build" [18:57:50] Error: ./node_modules/firebase/firestore/platform_browser/webchannel_connection.js Module not found: Error:
Can't resolve '@firebase/webchannel-wrapper' in
'/Users/usr/Documents/project/node_modules/firebase/firestore/platform_browser' resolve
'@firebase/webchannel-wrapper' in
'/Users/usr/Documents/project/node_modules/firebase/firestore/platform_browser' Parsed request is
a module using description file: /Users/usr/Documents/project/node_modules/firebase/package.json
(relative path: ./firestore/platform_browser) Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/usr/Documents/project/node_modules/firebase/package.json
(relative path: ./firestore/platform_browser) resolve as module looking for modules in
/Users/usr/Documents/project/node_modules using description file:
/Users/usr/Documents/project/package.json (relative path: ./node_modules) Field 'browser' doesn't
contain a valid alias configuration after using description file:
/Users/usr/Documents/project/package.json (relative path: ./node_modules) …Run Code Online (Sandbox Code Playgroud) 刚开始使用AngularFire2 v5时,运行该应用程序时出现以下错误大约十二次:命名空间'firebase'在以下.d.ts文件中没有导出的成员'firestore':
node_modules/angularfire2/firebase.app.module.d.ts
node_modules/angularfire2/firestore/collection/changes.d.ts
node_modules/angularfire2/firestore/firestore.d.ts
node_modules/angularfire2/firestore/interfaces.d.ts
node_modules/angularfire2/firestore/observable/fromRef.d.ts
Run Code Online (Sandbox Code Playgroud)
我在“ angularfire2”上:“ ^ 5.0.0-rc.3”。
我想获取firestore中存在的文档总数.我不想只获取数据内部产品集合的总数我有200,000个项目是可能的Angular 4-5,而不是angular.js
有人可以告诉我如何实现这一目标吗?
我的代码到目前为止并没有用
get_total_messages() {
this.messages_collection = this.afs.collection<MessageEntity>('messages');
return this.messages_collection.snapshotChanges();
}
Run Code Online (Sandbox Code Playgroud)
this.firebase_Service.get_total_messages().subscribe( data => {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Google Firebase的新Firestore在学习角度的同时创建一个新应用。我的应用程序当前创建一个名为Links的集合,并创建一个具有自定义ID的新文档,该自定义ID在用户添加链接(即shorturl)时生成,该文档中包含4个字段:
我希望应用程序查询url字段中文档内的数据。
我已经创建了正确文档的路径:
linkCollection: Observable<{}>;
constructor(private afs: AngularFirestore, private router: Router) {
this.path = this.router.url.replace('/','');
afs.collection('Links').doc(this.path).valueChanges();
}
Run Code Online (Sandbox Code Playgroud)
这可能是一个简单的解决方案,但我不确定如何获取url字段。我拥有的代码能够检索该文档,并且在另一部分中使用类似的方法来检索所有想法,并使用* ngFor显示数据,但不确定如何在ts文件而不是模板中进行操作。
firebase angularfire2 angular google-cloud-firestore angularfire5
假设我有一个应用程序存储用户帐单,用户添加或删除帐单.数据结构如下:
users/user_id/bills/bill_id
Run Code Online (Sandbox Code Playgroud)
票据文件结构为
{ bill_name: string, amount: number }
Run Code Online (Sandbox Code Playgroud)
我希望显示与账单名称对应的用户聚合值,可以说我在账单集合中有2个条目
{ bill_name: 'amazon', amount: 1000 }
{ bill_name: 'amazon', amount: 2000 }
Run Code Online (Sandbox Code Playgroud)
我的输出应该是
{ bill_name: 'amazon', amount: 3000 }
Run Code Online (Sandbox Code Playgroud)
我的问题是什么是最好的聚合值
创建一个在onWrite 上触发的云功能,/user/user_id/bills/bill_id
并在/users/user_id/aggregated_bills/用户添加或删除账单时创建一个新条目,以及此功能从/users/user_id/aggregated_bills/bill_id/账单名称为"amazon" 的数据中读取数据添加对此条目进行数学处理并存储新条目aggregated_bills集合中的值.我还想知道我们是否可以从云功能中添加或读取数据库,然后引用它.在functions.firestore.document('/users/{user_id}/bills/{bill_id}').onWrite( ...
创建一个在HTTPS请求时触发的云功能,并从/users/user_id/bills/账单名称为"amazon"的位置读取数据并计算其中的聚合值,并返回响应.
可能是这个问题的任何其他解决方案
在这里,我想说,获取汇总值不仅适用于一个账单,而且适用于多个账单.假设我想向用户仪表板显示他看到前20个账单的汇总值
firebase firebase-realtime-database google-cloud-functions angularfire2 google-cloud-firestore
如Firebase Cloud Firestore Batched中所述:
如果不需要读取操作集中的任何文档,则可以将多个set操作作为包含set(),update()或delete()操作的任意组合的单个批处理执行。一批写操作是原子完成的,可以写到多个文档。
如何使用angular 5删除集合中的所有文档?
// Get a new write batch
var batch = db.batch();
// Delete the city 'LA'
var laRef = db.collection("cities").doc("LA");
batch.delete(laRef);
<!-- Delete All Tasks -->
<button
mat-button mat-icon-button
(click)="tasksService.deleteAllTasks(openSnackBar())"
matTooltip="Delete All Tasks"
class="toolbar-btn"
[disabled]="(tasksService.tasks$ | async)?.length == 0">
<i class="fa fa-trash"></i>
</button>
<!-- Delete All Tasks -->
Run Code Online (Sandbox Code Playgroud) 我想用AngularFire 2创建一个新的Angular 6应用程序.虽然我遵循了教程,但是我得到了一个版本错误.
AngularFire2设置教程:https: //github.com/angular/angularfire2/blob/master/docs/install-and-setup.md
即使我只是尝试使用教程中看到的Observable,我也会收到以下错误:
ERROR in node_modules/angularfire2/angularfire2.d.ts(3,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Subscription"' has no exported member 'Subscription'.
node_modules/angularfire2/firestore/collection/changes.d.ts(3,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/angularfire2/firestore/collection/collection.d.ts(3,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/angularfire2/firestore/document/document.d.ts(3,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/angularfire2/firestore/firestore.d.ts(3,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/angularfire2/firestore/interfaces.d.ts(1,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Subscriber"' has no exported member 'Subscriber'.
node_modules/angularfire2/firestore/observable/fromRef.d.ts(2,10): error TS2305: Module '"/Users/tarek/Documents/Development/web_app/apphoven-web/node_modules/rxjs/Observable"' has no exported member 'Observable'. …Run Code Online (Sandbox Code Playgroud) 我有一个名为Posts的Firestore集合,我在客户端插入了一个插件,即可正常工作。
我想使用firebase函数将createdAt和updatedAt字段添加到我的帖子集合firestore中的每个插入中。
firebase firebase-realtime-database google-cloud-functions angularfire2 google-cloud-firestore
angularfire2 ×10
firebase ×7
angular ×4
typescript ×3
angular5 ×1
angularfire5 ×1
ionic2 ×1
ionic3 ×1
javascript ×1