如何解决使用React App在Firestore中切换布尔值
我目前正在使用React和Firestore构建TODO应用。 这是我第一次使用Firestore,但遇到了问题。
我已经创建了一些用于在数据库和UI中添加和删除待办事项的函数。 但是,当尝试切换布尔值“ completed”时遇到了一些困难。 这是我当前的功能,称为待办事项的onClick。
const todos = firebase.firestore().collection("todos");
markComplete = (id) => {
todos
.doc(id)
.update({ completed: !completed })
.then(function () {
console.log("Todo successfully updated!");
})
.catch(function (error) {
// The document probably doesn't exist.
console.error("Error updating todo: ",error);
});
由于“!completed”返回未定义,看来我无法以这种方式切换布尔值。
关于我应该如何使用React + Firestore切换布尔值的任何建议? 我尝试阅读文档失败。
解决方法
您需要先阅读文档以获得completed
字段的值,然后写返回新值。
markComplete = (id) => {
todos
.doc(id)
.get()
.then(function (doc) {
if (doc.exists) {
return doc.ref.update({ completed: !doc.data().completed });
} else {
// Throw an error
}
})
.then(function () {
console.log('Todo successfully updated!');
})
.catch(function (error) {
// The document probably doesn't exist.
console.error('Error updating todo: ',error);
});
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。