同时运行React Native-MongoDB应用时iPhone出现MongoDB查询BSONError异常
React Native Expo应用多设备运行时iPhone端传递空ID引发MongoDB BSONError
问题场景
我开发的React Native应用基于Expo Go运行:
- 单独在iPad上运行时,可正常通过axios调用后端接口从MongoDB查询数据
- 同时在iPad和同版本iOS的iPhone上运行时,iPhone端会导致后端抛出BSONError,错误提示传入的参数不符合MongoDB ObjectId的格式要求
- 排查发现iPhone端本地打印
lastMessage值正确,但实际传递给后端的是空字符串
相关代码
前端axios请求代码
axios.post('http://192.168.0.224:8000/findMessage', {lastMessageId: lastMessage})
后端MongoDB查询代码
messages.find({_id: req.body.lastMessageId}, {message: 1})
后端错误信息
'reason: BSONError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer'
已尝试的解决措施
- 重装Expo Go
- 执行
npm start --reset-cache重置服务器缓存
以上操作均未解决问题,恳请帮忙分析原因及提供解决办法。
内容的提问来源于stack exchange,提问作者Peter Double U
相关产品推荐
相关产品推荐

