我正在研究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的代码仅在单击事件上能正常工作,但对于本机响应生命周期组件则无法正常工作,并且会发生以下错误:
在Firestore文档中,doc(“ LA”)静态传递db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
如何将这些静态数据发送到动态文档ID?
答案 0 :(得分:0)
setState
调用是异步的,另请参见React documentation for setState
。到您尝试使用状态写入文档时,它还没有传播。
最简单的解决方法是仅使用相同的值来查找文档:
firebase.firestore().collection('mainmhealthdata').doc(JSON.parse(value)).set({
insta: 0
})
答案 1 :(得分:0)
我已经通过使用异步/等待方法解决了问题
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})
}