从反应原生/[未处理的承诺拒绝:FirebaseError:预期类型'ba',但它是:自定义Oa对象]中获取项目列表
Posted
技术标签:
【中文标题】从反应原生/[未处理的承诺拒绝:FirebaseError:预期类型\'ba\',但它是:自定义Oa对象]中获取项目列表【英文标题】:Get list of items from firestore in react native/[Unhandled promise rejection: FirebaseError: Expected type 'ba', but it was: a custom Oa object]从反应原生/[未处理的承诺拒绝:FirebaseError:预期类型'ba',但它是:自定义Oa对象]中获取项目列表 【发布时间】:2022-01-15 15:14:43 【问题描述】:您好,我需要从我的 firestore db 中获取这样的项目列表
items=
'2012-05-22': [name: 'item 1 - any js object'],
'2012-05-23': [name: 'item 2 - any js object', height: 80],
'2012-05-24': [],
'2012-05-25': [name: 'item 3 - any js object', name: 'any js object']
这是我的数据库结构
所以这是我的代码,但不起作用
const getUserEvents = () =>
const FSquery = query( collection( FSdb, `usertasks/$user.uid/events`) )
const unsubscribe = onSnapshot( FSquery, ( querySnapshot ) =>
// get all documents (using the date as id) from user's events collection
let eventData =
querySnapshot.forEach( (doc) =>
console.log("testing id", doc.id)
let arr = []
// the id of the document is the date for the event
eventData[ doc.id ] = arr
console.log("testing array", arr)
console.log("testing eventdata", eventData)
)
// now we get the collection of events for each day
let eventsOfTheDay = []
const eventKeys = Object.keys( eventData )
eventKeys.map( async (eventDate) =>
const events = await getDocs( FSdb, `users/$user.uid/events/$eventDate/items`)
events.forEach( (doc) =>
let event = doc.data()
event.id = doc.id
eventsOfTheDay.push( event )
)
eventData[ eventDate ] = eventsOfTheDay
console.log("this are the eventsoftheday", eventsOfTheDay)
)
// now we can set it into a state that can be passed to components to be consumed by the calendar
// eg setEvents( eventData )
)
我没有从 eventsoftheday 获得任何价值,甚至连 consloge 字符串“this is eventsoftheday”都没有 谢谢 我得到这个错误 [未处理的承诺拒绝:FirebaseError:预期类型'ba',但它是:自定义Oa对象]
【问题讨论】:
也许我在这里很笨,但是代码中的路径是users/$user.uid/events/$eventDate/dayEvents
,从控制台图像看起来路径是userTasks/$user.uid/events/$eventDate/items
是的,你是对的,我改变了,但仍然无法正常工作。将编辑帖子以更改它。谢谢。我收到此错误 [未处理的承诺拒绝:FirebaseError:预期类型'ba',但它是:自定义 Oa 对象]
这听起来像是与写操作有关的错误。
【参考方案1】:
getDocs
函数采用 Query 作为唯一参数,但您传递了两个参数。
const events = await getDocs(FSdb, `users/$user.uid/events/$eventDate/items`)
试着把上面的那行改成这样:
const events = await getDocs(
collection(FSdb, `users/$user.uid/events/$eventDate/items`)
);
// ^^^
// add collection
【讨论】:
以上是关于从反应原生/[未处理的承诺拒绝:FirebaseError:预期类型'ba',但它是:自定义Oa对象]中获取项目列表的主要内容,如果未能解决你的问题,请参考以下文章
反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map
未处理的承诺拒绝:TypeError:网络请求在expo react native 中失败
(节点:32032)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):MongoError:身份验证失败