我已经能够在Firebase中动态创建记录(用户个人资料)并检索其唯一ID。
但是现在我希望能够让最终用户更新其个人资料。虽然我可以检索配置文件的文档ID(也称为uid)。如何模板化动态获取已登录用户的uid并更新该特定记录的功能?
我尝试了以下方法:
async updateProfile() {
const docRef = await db.collection("users").get(`${this.userId}`);
docRef.update({
optInTexts: this.form.optInTexts,
phone: this.form.mobile
});
db.collection("users")
.update({
optInTexts: this.form.optInTexts,
phone: this.form.mobile
})
.then(function () {
console.log("Profile successfully updated!");
})
.catch(function (error) {
console.error("Error updating document: ", error);
});
}
`
我也尝试过
async updateProfile() {
const docRef = await db.collection("users").where("userId", "==", `${this.userId}`);
docRef.update({
optInTexts: this.form.optInTexts,
phone: this.form.mobile
});
db.collection("users")
.update({
optInTexts: this.form.optInTexts,
phone: this.form.mobile
})
.then(function () {
console.log("Profile successfully updated!");
})
.catch(function (error) {
console.error("Error updating document: ", error);
});
}
``
还有这个
async updateProfile() {
const docRef = await db.collection("users").get(`${this.userId}`);
docRef.update({
optInTexts: this.form.optInTexts,
phone: this.form.mobile
});
db.collection("users/`${this.userId}`")
.update({
optInTexts: this.form.optInTexts,
phone: this.form.mobile
})
.then(function () {
console.log("Profile successfully updated!");
})
.catch(function (error) {
console.error("Error updating document: ", error);
});
}
错误docRef.update is not a function
答案 0 :(得分:0)
查看这篇文章:How to update a single firebase firestore document后,我能够解决此问题。
我要引用的集合是一个用户表,其中包含从Firebase开箱即用的Google身份验证创建的数据。因此,查询和更新数据与我的其他数据(文档ID等于集合的uid)不同。工作解决方案:
async updateProfile() {
const e164 = this.concatenateToE164();
const data = {
optInTexts: this.form.optInTexts,
phone: e164};
const user = await db.collection('users')
.where("uid", "==", this.userId)
.get()
.then(snapshot => {
snapshot.forEach(function(doc) {
db.collection("users").doc(doc.id).update(data);
});
})
}