通过javascript更改firestore中的值
我想通过脚本在firestore中设置属性。我有一个小的登录应用程序。当用户登录时,如果票证为false,则票证应更改为true,并应将该状态通知第一个用户。 我如何才能给firestore提供来自特定用户的变量为真的信息,以及它应该在firestore中设置为真的信息?提前谢谢你通过javascript更改firestore中的值,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我想通过脚本在firestore中设置属性。我有一个小的登录应用程序。当用户登录时,如果票证为false,则票证应更改为true,并应将该状态通知第一个用户。 我如何才能给firestore提供来自特定用户的变量为真的信息,以及它应该在firestore中设置为真的信息?提前谢谢你 function signIn() { var userEmail = document.getElementById("email_field").value; var userPass = documen
function signIn() {
var userEmail = document.getElementById("email_field").value;
var userPass = document.getElementById("password_field").value;
const promise = auth.signInWithEmailAndPassword(userEmail, userPass);
promise.catch(e => alert(e.message));
}
firebase.auth().onAuthStateChanged(async function (user) {
if (user) {
// User is signed in.
document.getElementById("user_div").style.display = "block";
document.getElementById("login_div").style.display = "none";
document.getElementById("login_div").style.visibility = "hidden";
var docRef = await db.collection("users").doc(user.uid);
// Get the data from the user
await docRef.get().then(async function (doc) {
if (doc.exists) {
ticket = await doc.data().ticket;
if(!ticket) {
// how to set the ticket = true if it is false
}
} else {
}
}).catch(function (error) {
console.log("Error getting document:", error);
});
} else {
...
}
});
您可以使用
docRef
更新用户文档
提供以下更新文档的示例:
let setWithOptions = cityRef.set({
capital: true
}, {merge: true});
应用于您的用例,它将如下所示:
docRef.set({
ticket: true
}, {merge: true});
传递{merge:true}意味着原始文档不会被覆盖,而只会替换修改后的值。代码中有三个
wait
和一个async
关键字,但这些关键字似乎都没有意义。请仔细研究async
和wait
所做的事情,否则您将自食其果。您[将数据写入Firestore()]有什么问题?