javascript - Firestore - 查询,然后更新
问题描述
我想返回一个具有特定 ID 的项目并对其执行更新操作。我的查询得到了正确的结果,但它不会让我更新它。
我尝试遵循本教程:https ://www.youtube.com/watch?v=mYyPbfpoZeM 并阅读文档。两者都没有帮助。同一主题的其他主题是不同的。
我有一个对象数据库,该数据库具有存储为整数的唯一 ID。我有一个 HTML 表单来获取一个 ID 作为用户输入,下面的查询来检索相应的对象。
我试过这个。查询有效,更新无效。
db.collection('objects').where('ID','==', ID ).get().then((snapshot) => {
snapshot.docs.forEach( doc => {
console.log('debug');
console.log(doc.data().ID);
})
});
我对firebase和js还是新手,所以如果我的代码完全错误,请原谅我。我目前坚持这个:
db.collection('objects').where('ID','==', ID ).get().then((doc) => {
console.table(doc);
});
这仍然无法正常工作。
对于第二个片段,我目前得到一个难以辨认的表格,在其中我无法真正找到我正在寻找的对象。
如何更新单个文档中的单个值?
编辑:我忘记了更新功能的实现尝试。我在片段一中的 for 循环内尝试doc.update({value:0})
了产生doc.update is not a function
. 同样对于doc.data().update(...)
。
在第二个片段中,我主要尝试查看返回的内容并运行上述 uodate 函数的变体。没有成功。
解决方案
我通过研究 firestore 文档中更详细地介绍了实际功能的部分,设法让它工作。不知何故,我很难找到这个。
db.collection("users").where("name", "==", somename).limit(1).get().then(query => {
console.log(query);
const thing = query.docs[0];
console.log(thing.data());
let tmp = thing.data();
tmp.current_game_play = tmp.current_game_play + 1;
console.log(tmp);
thing.ref.update(tmp);
});
所以我where
用来获取一个 Query 对象,用来在 Promise 解析中获取一个get
querySnapshot then
,docs[0]
用来检索第一个(也是唯一的)documentSnapshot,最后ref
获取一个参考,使整个事情以后可以更新。
推荐阅读
- reactjs - 如何在 lodash .times 中创建地图功能
- tensorflow - 如何保存和使用在 PyTorch / TensorFlow / Keras 中开发的训练有素的神经网络?
- python - Python3.6 AttributeError:模块'asyncio'没有属性'run'
- dart - 需要 1 个必需参数,但找到 0 个
- javascript - 如何在javascript中放大/缩小页面
- django - 覆盖 get_context_data 会阻止一些上下文数据进入模板
- airflow - 气流外部传感器卡在戳
- ios - iOS - 当它显示“返回”时更改 backBarButton 标题
- java - 带有ehcache的spring boot缓存找不到Builder的名为xxx的缓存
- java - 如何改进分页的 SQL 查询?