我的代码中似乎有什么问题,我正在创建一个基于 firestore 和 firebase 的应用程序。 到目前为止一切正常,但现在我想添加一个从 1 开始的唯一键,然后按升序进入firebase 中的每个项目,通过它我可以检索我的FlatList 组件中的所有项目。 但我无法做到这一点。我目前面临的一个问题是,当用户填写表单并单击POST 按钮**[POST 按钮的详细信息如下]** 数据存储在 Firebase 中但计数器没有增加,之后 第二次尝试(意味着用户填写另一个表单并单击 POST 按钮)值最终增加。
表示在两个表单填写后,计数器递增一,但我想在每个填写的表单上递增计数器。
请帮我!
请参阅下面的代码
const [adTitle, setAdTitle] = useState('')
const [adDescription, setAdDescription] = useState('')
const [yearOfPurchase, setYearOfPurchase] = useState('')
const [price, setPrice] = useState('')
const [contactNo, setContactNo] = useState('')
const [image, setImage] = useState('')
const [counter, setCounter] = useState(0)
我在我的应用程序中使用这些股份,所有其他工作都很好,问题就出在这个问题上。
const [counter, setCounter] = useState(0)
并在用户按下发布按钮时调用此函数
const postData = async () => {
if (!adTitle || !adDescription || !yearOfPurchase || !price || !contactNo) {
Alert.alert("Please fill all the Fields")
return
}
try {
getCounter(); // <-- called this function for Counter, Details are Below
await fireStore().collection("ads").add({
adTitle,
adDescription,
yearOfPurchase,
price,
contactNo,
image,
uniqueID: counter,
uid: Auth().currentUser.uid
})
Alert.alert("Item Successfully Posted..")
setAdTitle('')
setAdDescription('')
setYearOfPurchase('')
setPrice('')
setContactNo('')
setImage('')
} catch (err) {
Alert.alert("Something went wrong\nPlease try again...")
}
}
在调用getCounter();
函数时,它从 firebase获取当前计数器值,然后将该值加一,然后更新 firebase 中的值
getCounter();
函数 代码:(我认为问题就在这个 getCounter() 中,但我无法弄清楚。)
const getCounter = async () => {
try {
const querySnap = await fireStore().collection('Counter').doc('count').get()
setCounter((querySnap.data().counter)+1)
} catch(error) {
alert("Something went wrong\n[Error]: "+ error)
}
try {
await fireStore().collection('Counter').doc("count").update({
counter: counter
})
} catch {
// alert("Something went wrong\nPlease try again...")
}
}