Firebase Firestore onSnapshot PayloadTooLargeError:Expo / React Native 项目上的请求实体太大

Posted

技术标签:

【中文标题】Firebase Firestore onSnapshot PayloadTooLargeError:Expo / React Native 项目上的请求实体太大【英文标题】:Firebase Firestore onSnapshot PayloadTooLargeError: request entity too large on Expo / React Native project 【发布时间】:2021-04-21 13:55:01 【问题描述】:

我有订阅以侦听 Firestore 集合更新的 Expo / React Native 项目。我将 Expo SDK 从 39 更新到 40,并且 onSnapshot 回调函数在被调用时开始抛出“PayloadTooLargeError:请求实体太大”。我没有更新集合中的文档,也没有更改代码。 Firebase 版本是 "firebase": "7.9.0",我在升级 Expo SDK 时没有更新。

有谁知道这是什么原因以及如何解决?

我订阅这样的收藏更新

  componentDidMount = () => 

//Subscribe for collection changes
const unSubscribeUpdates = this.unsubscribe = db.collection("test_collection")
.onSnapshot(includeMetadataChanges: false, this.onTestCollectionChanged).bind(this);
 
//Subscribe for favourite changes
const unSubscribeFavouriteUpdates = this.unsubscribe = db.collection("favourites")
.doc(Firebase.auth().currentUser.uid)
.onSnapshot(includeMetadataChanges: false,this.onFavouritesChanged).bind(this);

this.setState( collection_items: items, favourites:favourites, unSubscribeUpdates: unSubscribeUpdates, unSubscribeFavouriteUpdates:unSubscribeFavouriteUpdates );

听众都是这样的

  onFavouritesListChanged = (doc) => 
    console.log("onFavouritesListChanged for user :" + Firebase.auth().currentUser.uid);
.....

  onVideoListChanged = (snapshot) => 
    console.log("onVideoListChanged");
    console.log("videos length " + this.state.videos.length);

这是错误

onVideoListChanged PayloadTooLargeError:请求实体太大 在 readStream (/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/@expo/dev-server/node_modules/raw-body/index.js:155:17) 在 getRawBody (/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/@expo/dev-server/node_modules/raw-body/index.js:108:12) 在读取(/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/@expo/dev-server/node_modules/body-parser/lib/read.js:77: 3) 在 jsonParser (/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/@expo/dev-server/node_modules/body-parser/lib/types/json.js: 135:5) 通话时(/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/connect/index.js:239:7) 在下一个(/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/connect/index.js:183:5) 在serveStatic (/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/serve-static/index.js:75:16) 通话时(/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/connect/index.js:239:7) 在下一个(/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/connect/index.js:183:5) 通话时(/Users/nnn/.nvm/versions/node/v14.15.4/lib/node_modules/expo-cli/node_modules/connect/index.js:248:3)

【问题讨论】:

听起来你有一个关于 expo 的错误报告,而不是 Stack Overflow 的编程问题。 【参考方案1】:

这是cnosole.log输出的警告

【讨论】:

【参考方案2】:

事实证明,这不是 Expo 中的问题,而是 NodeJs 14 中在将太长的字符串打印到 console.log 输出时出现的问题。

【讨论】:

以上是关于Firebase Firestore onSnapshot PayloadTooLargeError:Expo / React Native 项目上的请求实体太大的主要内容,如果未能解决你的问题,请参考以下文章

@firebase/firestore:Firestore (8.6.5):无法访问 Cloud Firestore 后端

使用Firestore需要firebase-firestore.js文件吗?

无法在firebase.firestore.CollectionReference中使用Array firebase.firestore.Query为什么?

(firebase.firestore 不是函数)尝试在 Firestore 中创建集合时

Firestore 配置 - Firebase

firebase2.default.firestore 不是一个函数 - React Firebase