angular - 如何将数据推送到 Typescript 中的 BehaviourSubject?
问题描述
在我的 Ionic / Angular 应用程序中,我正在尝试使用以下代码从 firestore 检索数据:
private _users = new BehaviorSubject<User[]>([]);
return of(
firebase.firestore().collection("users").get()
.then((docs) => {
docs.forEach((doc) => {
this._users.push(doc);
});
}).catch((err) => {
console.log(err);
})
);
但是当我尝试编译时出现此错误:
Property 'push' does not exist on type 'BehaviorSubject<User[]>'.
有人可以告诉我如何从这个集合中检索数据并填充_users
它吗?
解决方案
您可以检索您的收藏思想专用BehaviorSubject
属性,称为value
:
docs.forEach((doc) => {
this._users.next([...this._users.value, doc]);
});
但看起来你可以简单地更新整个数组:
.then((docs) => {
this._users.next(docs);
})
另外,不要忘记转换DocumentData
为User
对象,例如:
interface User {
id: string;
name: string;
}
.then((docs) => {
this._users.next(docs.map(doc => {
const data = doc.data() as User;
return { id: doc.id, name: data.name };
});
})
推荐阅读
- xcode - 如何在 Xcode 12.4 中保持提交/差异窗口的布局
- vue.js - 观看 nuxt-auth 令牌更改
- html - 仅在选中另一个框时如何使复选框“可选中”
- javascript - 在我的插槽中包装动态添加的子元素
- python - Python:按CSV中的唯一列合并重复项
- wordpress - woocommerce 下拉菜单中的可变产品价格
- javascript - Vue 2.0 渲染问题,当我实际提供不同的 id 时,它设置了 div id="1"
- javascript - 如何从 Cloud Functions 查询 Firestore 集合?
- python-3.x - Python Flask如何将python脚本中的文本打印到网页而不是控制台
- jquery - 服务器端处理后复选框在 DataTables 中不起作用