【问题标题】: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 对象]
  • 这听起来像是与写操作有关的错误。

标签: javascript firebase react-native google-cloud-firestore expo


【解决方案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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 2018-04-19
    • 1970-01-01
    • 2022-06-10
    • 2019-10-06
    • 2022-01-02
    • 2022-07-05
    • 1970-01-01
    相关资源
    最近更新 更多