node.js - Quasar Firestore 字段相等查询过滤器不起作用
问题描述
我正在使用 quasar 向 Cloud Firestore 读取/写入唯一数据,但以下代码不起作用。它无法根据title
字段检测现有记录。我正在使用 Web 版本 9 语法。
<script>
import seedData from "../../data/todos.json";
import {
getFirestore,
collection,
getDocs,
addDoc,
query,
where,
} from "firebase/firestore";
const db = getFirestore();
seedData.forEach(async (todo) => {
console.log("Processing ", todo.title, "...");
const q = query(
collection(db, "todos"),
where("title", "==", todo.title)
);
const querySnapshot = await getDocs(q);
if (querySnapshot.empty) {
console.log("Add missing todo: ", todo.title);
await addDoc(collection(db, "todos"), { todo });
this.todos.push(todo);
} else {
console.log("Skip existing record: ", querySnapshot.docs[0].data());
}
});
</script>
样本数据:
[{
"userId": 1,
"id": 1,
"title": "Learn Quasar",
"completed": false
},
{
"userId": 1,
"id": 2,
"title": "Learn Vue",
"completed": false
},
{
"userId": 1,
"id": 3,
"title": "Learn Firebase",
"completed": false
}
]
任何建议和见解都值得赞赏。
解决方案
我无法用这个简化的代码重现问题:
const q = query(
collection(db, "69534155"),
where("title", "==", "Learn Quasar")
);
const querySnapshot = await getDocs(q);
if (querySnapshot.empty) {
console.log("Add missing todo: ", "Learn Quasar");
} else {
console.log("Skip existing record: ", querySnapshot.docs[0].data());
}
有关完整的工作代码,请参阅:https ://jsbin.com/gekuqec/3/edit?html,console
这打印:
跳过现有记录:...
当我将标题更改为不存在的内容时,它会打印:
添加缺少的待办事项:
我建议在调试器中单步执行代码,并检查todo.title
文档中是否确实存在值。
如果在此之后您仍然有问题,请尝试以与我在这里分享的类似的最小设置复制它,以便我们查看。
推荐阅读
- google-classroom - Google 课堂主帐号
- javascript - React 应用程序检测用户是否刷新窗口或导航离开
- html - 鼠标在图片上时在图片上显示符号
- java - 无法使用实用程序方法检查多个edittext是否为空,并且在输出toast中自定义正确的edittext id
- python - 了解 PyTorch 中 index_put 的行为
- mysql - mySql 查询——网络文件共享程序
- ruby - 无法将实例变量的值从同一类中传递给另一个(Ruby)
- api - 如何使用监视列表 ID 通过 Stocktwits API 访问消息?
- c++ - 如何在 Xcode 中获得 std::optional 支持?
- r - 将数据从excel导入R?