Soo 我想將一個編輯過的專案從一個陣列保存到 firebase 但是當我嘗試使用 setDoc() 時,我在下面收到這個錯誤
Uncaught FirebaseError: Expected type 'Ta2', but it was: a custom Aa2 object
這是我的代碼:
<div v-for="(post, id) in posts" :key="id">
<h3>By: {{ post.name }}</h3>
<p>{{ post.post }}</p>
<p>{{ post.date }}</p>
<button @click="deletePost(id)">delete</button>
<div v-if="post === postItemToEdit">
<input type="text" v-model="post.post" >
<button @click="savePost">Save</button>
<button @click="cancleEditMode">Cancle</button>
</div>
<button v-else @click="editPost(post)">Edit</button>
</div>
<script setup>
const blogCollectionRef = collection(db, "blogs")
const name = ref("")
const post = ref("")
const addPost = () => {
addDoc(blogCollectionRef, {
name: name.value,
post: post.value,
date: Date.now(),
});
name.value = ""
post.value = ""
}
const postItemToEdit = ref()
const editPost = (post) => {
postItemToEdit.value = post
}
const savePost = () => {
postItemToEdit.value = (false)
setDoc(blogCollectionRef, {
post: "Los Angeles"
})
}
</script>
我認為這與我使用集合而不是檔案這一事實有關,但我正在獲取的陣列存盤在我命名為“博客”的集合中。
uj5u.com熱心網友回復:
您應該使用updateDoc()更新現有檔案而不是setDoc(). 您將需要檔案 ID,以便將其傳遞給savePost()函式:
<div v-for="(post, id) in posts" :key="id">
<!-- ... -->
<button @click="savePost(post.id)">Save</button>
<!-- ... -->
</div>
const savePost = async (postId) => {
postItemToEdit.value = (false)
await updateDoc(doc(blogCollectionRef, postId), {
post: "Los Angeles"
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526337.html
標籤:Google Cloud Collective javascript火力基地谷歌云火库Vuejs3
下一篇:Firebase訂單和限制
