【问题标题】:Function CollectionRefernce.doc() requires its first argument to be of type string函数 CollectionRefernce.doc() 要求它的第一个参数是字符串类型
【发布时间】:2019-01-03 17:43:00
【问题描述】:

我正在研究 React-native 和 Firestore。要在 Firestore 中添加数据,代码如下:

    componentWillMount() {

      AsyncStorage.getItem("logid").then((value) => {
            this.setState({"logid":JSON.parse(value) });
        }).done();

        firebase.firestore().collection('mainmhealthdata').doc(this.state.logid).set({
          insta: 0
        })

我将 logid 存储在 AsyncStorage 中,并在 componentWillMount() 中将其放入另一个屏幕。上面的 firestore 代码仅在点击事件上工作正常,但对于 react-native 生命周期组件,它不起作用,并出现以下错误:

在 firestore 文档中,doc("LA") 静态传递 db.collection("cities").doc("LA").set({ name: "Los Angeles", state: "CA", country: "USA" })

如何将这个静态数据发送到动态 doc id 中?

【问题讨论】:

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


    【解决方案1】:

    setState 调用是异步的,另请参阅React documentation for setState。当您尝试使用状态写入文档时,它还没有传播。

    最简单的解决方法是只使用相同的值来查找文档:

    firebase.firestore().collection('mainmhealthdata').doc(JSON.parse(value)).set({
      insta: 0
    })
    

    【讨论】:

      【解决方案2】:

      我已经使用 async/await 方法解决了问题

      async componentDidMount() {
      const res = await AsyncStorage.getItem("LoginId")
      console.log("result in calbmi is",res)
      var parres= JSON.parse(res)
      firebase.firestore().collection('mainmhealthdata').doc(parres).set({
        insta: 0
      },{merge: true})
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-07
        • 2020-07-13
        • 1970-01-01
        • 2019-10-27
        • 2022-01-21
        • 2021-10-28
        • 2021-09-20
        • 1970-01-01
        相关资源
        最近更新 更多