我有一个简单的应用程序,允许用户输入电子邮件地址和日期。
我在Firestore中有一个集合,文档名称是自动生成的,两个字段保存在那里。
我希望能够只更新日期,如果电子邮件ID已经在数据库中(没有太多的帮助,如果它更新电子邮件地址为匹配的日期,因为将有许多重复的日期)。
任何帮助都是极好的。
以下是我目前为止的JS:
const db = getFirestore(firebaseApp);
const btn = document.getElementById("btn");
const docRef = btn.addEventListener('click', (e) => {
let mail = document.getElementById("email").value;
e.preventDefault,
setDoc(doc(db, "candidates", mail), {
email: document.getElementById("email").value,
date: Timestamp.fromDate(new Date(document.getElementById("date").value)),
});
});
问题已解决,最终工作代码:
const db = getFirestore(firebaseApp);
const btn = document.getElementById("btn");
const docRef = btn.addEventListener('click', (e) => {
let mail = document.getElementById("email").value;
e.preventDefault,
setDoc(doc(db, "candidates", mail), {
email: document.getElementById("email").value,
date: Timestamp.fromDate(new Date(document.getElementById("date").value)),
});
});
const candidateRef = doc(db, "candidates", mail);
await updateDoc(candidateRef, {
date: date
});
1条答案
按热度按时间jdgnovmf1#
如果电子邮件ID已在数据库中,我希望能够仅更新日期
您应该首先查询数据库,检查是否存在包含该电子邮件的文档,如果存在,则更新该文档。
大致如下(我们假设每个电子邮件只有一个文档):
请注意,您可以根据您的功能要求和数据模型使用事务。在这种情况下,您需要使用电子邮件作为文档ID,因为您无法在JS SDK的事务中使用查询。