Javascript 如何在react native中显示来自两个Firestore集合的数据

Javascript 如何在react native中显示来自两个Firestore集合的数据,javascript,firebase,react-native,async-await,google-cloud-firestore,Javascript,Firebase,React Native,Async Await,Google Cloud Firestore,我正在使用Firestore创建一个React本机应用程序来存储数据。我目前有两个集合,一个集合存储名为“booking”的预订信息,另一个集合包含名为“user”的用户信息。预订集合包含参与预订的用户的用户id 我目前正在尝试浏览所有预订,并从用户表中提取预订中引用的用户的用户图像。我的代码如下: async retrieveSupplierImg(supplierId) { const userSnapshot = await firebase .firestore()

我正在使用Firestore创建一个React本机应用程序来存储数据。我目前有两个集合,一个集合存储名为“booking”的预订信息,另一个集合包含名为“user”的用户信息。预订集合包含参与预订的用户的用户id

我目前正在尝试浏览所有预订,并从用户表中提取预订中引用的用户的用户图像。我的代码如下:

async retrieveSupplierImg(supplierId) {
    const userSnapshot = await firebase
      .firestore()
      .collection("User")
      .doc(supplierId)
      .get();

    return {uri: userSnapshot.data().image};
  }
renderBooking(){
var会议=this.state.appoinces;
返回(
{meetings.map(预订=>(
);
}
此代码失败,出现以下错误:

您试图在对象上设置值为
1
的键
\u 65
,该对象是不可变的,并且已冻结


有人知道我如何解决这个问题吗?

这是一个已经解决的问题。检查一下。您只需要将承诺(我猜是用户快照和会议)的存储位置更改为
。然后(值=>{Asyncstorage.setitem()})

这是一个已经解决的问题。请检查此项。您只需将承诺(我猜是userSnapshot和meetings)的存储位置更改为
。然后(value=>{Asyncstorage.setitem()})

您需要首先在retrieveSupplierImg调用和getMeetings()之间进行同步第二,尝试将异步添加到此。retrieveSupplierImgIf我做的是所有值都未定义,哪些值?在ComponentDidMount下调用您的函数如果我将异步添加到getmeetings函数的setstate内的映射中,则状态中存储的所有值在打印到控制台时都未定义。具体需要一些帮助!您需要在retrieveSupplierImg call first和getMeetings()之间进行同步第二,尝试将异步添加到此。retrieveSupplierImgIf我做的是所有值都未定义,哪些值?在ComponentDidMount下调用您的函数如果我将异步添加到getmeetings函数的setstate内的映射中,则状态中存储的所有值在打印到控制台时都未定义。具体需要一些帮助!
async getMeetings() {
    var meetings = await firebase
      .firestore()
      .collection("Booking")
      .where("status", "==", true)
      .where("consumer_id", "==", this.state.user_id)
      .get()


    this.setState({ appointments: meetings.docs.map(doc => {
       var image = this.retrieveSupplierImg(doc.data().supplier_id);
          return {
            supplier_id: doc.data().supplier_id,
            booking_id: doc.data().booking_id,
            start_time: doc.data().start_time,
            user_image: image
        }
    })});
}
renderBooking() {

      var meetings = this.state.appointments;
    return (
      <View
        style={{
          marginTop: 10,
          marginBottom: 10,
          width: width,
          height: height * 0.19,
          justifyContent: "flex-start",
          alignItems: "center"
        }}
      >
        {meetings.map(booking => (

                <Image
                  source={booking.user_image}
                  style={{
                    height: 45,
                    width: 45,
                    borderRadius: 23,
                    marginLeft: 10
                  }}
                />

    );
  }