Firestore - 查询,然后更新

Tha*_*rry 11 javascript firebase google-cloud-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);
        })
    });
Run Code Online (Sandbox Code Playgroud)

我还是 firebase 和 js 的新手,所以如果我的代码完全错误,请原谅我。我目前坚持这个:

db.collection('objects').where('ID','==', ID ).get().then((doc) => {
    console.table(doc);
});
Run Code Online (Sandbox Code Playgroud)

这仍然不起作用。

对于第二个片段,我目前得到一个难以辨认的表格,我无法在其中真正找到我正在寻找的对象。

如何更新单个文档中的单个值?

编辑:我忘记了更新功能的实现尝试。我doc.update({value:0})在片段一中的 for 循环中尝试过,结果是doc.update is not a function. 对于doc.data().update(...).

在第二个片段中,我主要尝试查看返回的内容并运行上述 uodate 函数的变体。没有成功。

Tha*_*rry 22

我设法通过研究 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);
            });
Run Code Online (Sandbox Code Playgroud)

所以我where用来获取一个 Query 对象,用来getthen承诺解析docs[0]中获取一个querySnapshot ,用来检索第一个(也是唯一的)documentSnapshot,最后ref获取一个引用,使整个事情可以在以后更新

  • 链接到讨论“querysnapshotdocument”的“ref”的文档 https://googleapis.dev/nodejs/firestore/latest/QueryDocumentSnapshot.html (2认同)