angularjs - Firestore:snapshotChanges 不是函数
问题描述
在参考这篇文章时,我遇到了一个问题,它说snapshotChanges is not a function
:
TypeError: db.collection(...).snapshotChanges is not a function
at new <anonymous> (index.js:139)
at Object.instantiate (angular.js:5156)
at angular.js:11719
at Object.link (angular-route.js:1251)
at angular.js:1388
at Ba (angular.js:11266)
at p (angular.js:10585)
at g (angular.js:9832)
at angular.js:9697
at angular.js:10111 "<ng-view autoscroll="true" class="ng-scope">"
下面是我的代码:(请注意,有或没有pipe()
也会遇到同样的错误。)
var db = firebase.firestore();
$scope.accounts = db.collection("Accounts").snapshotChanges().pipe(map(actions => {
return actions.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
return { id, ...data };
});
}));
在我的 SPAindex.html
上,我定义了以下引用:
<script defer src="/__/firebase/6.4.1/firebase-app.js"></script>
<script defer src="/__/firebase/6.4.1/firebase-auth.js"></script>
<script defer src="/__/firebase/6.4.1/firebase-firestore.js"></script>
<script defer src="/__/firebase/6.4.1/firebase-messaging.js"></script>
<script defer src="/__/firebase/6.4.1/firebase-storage.js"></script> -->
<script defer src="/__/firebase/init.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.8/angular-route.min.js"></script>
<!-- AngularFire -->
<script src="https://cdn.firebase.com/libs/angularfire/2.3.0/angularfire.min.js"></script>
我可以知道为什么这个错误(snapshotChanges is not a function
)仍然出现吗?我需要将它包含doc.id
在我的映射结果中,谢谢!
解决方案
如果您使用纯 JavaScript SDK 来查询 Firestore,并且想要将侦听器附加到 Query,那么您应该使用onSnapshot()。
如果您想改用 AngularFire API 并使用snapshotChanges,则需要通过其自己的 API(请参阅链接),这与普通的 JavaScript SDK 不同。
推荐阅读
- mongodb - 使用 $in 或 $gt, $lt ($gte, $lte) 哪个更好?
- php - 在 Mediawiki 中上传时调整图像大小
- amazon-web-services - 我无法让我的自动缩放组引用我的 TargetGroup
- react-native - 移动到屏幕而不将其添加到 createTabNavigator
- dialogflow-es - Dialogflow 并直接从实现内联编辑器调用意图,而无需再次询问用户
- ruby-on-rails - 如何使用具有不同扩展名的 send_file 更新新创建的文件中的内容?
- reactjs - 在管理缓存时使用 CloudFront 在 S3 上部署 React 应用程序的步骤?
- gradle - 任务参数
- anylogic - 如何在 Collection anylogic 中创建多维数组?
- python-3.x - 向 Pandas 多索引添加行