Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firestore-查询,然后更新_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript Firestore-查询,然后更新

Javascript Firestore-查询,然后更新,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我想返回一个具有特定ID的项目,并对其执行更新操作。我的查询得到了正确的结果,但它不允许我更新它 我尝试了以下教程: 并阅读文档。两个人都没用。同一主题的其他线程是不同的 我有一个对象数据库,它的唯一ID存储为整数。 我有一个HTML表单来获取ID作为用户输入,下面的查询检索相应的对象 我试过这个。查询成功了,但更新没有成功 db.collection('objects').where('ID','==', ID ).get().then((snapshot) => { s

我想返回一个具有特定ID的项目,并对其执行更新操作。我的查询得到了正确的结果,但它不允许我更新它

我尝试了以下教程: 并阅读文档。两个人都没用。同一主题的其他线程是不同的

我有一个对象数据库,它的唯一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);
});
这仍然不起作用

对于第二个代码片段,我当前得到一个无法注册的表,在其中我无法真正找到我要查找的对象

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

编辑:我忘记了更新函数的实现尝试。 我尝试了
doc.update({value:0})
在代码片段one中的for循环中,该代码片段生成了
doc.update不是函数。类似于
doc.data().update(…)

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

试试这个:

var objectRef= db.collection("objects").doc(ID);

objectRef.update({
    value: 0
}).then(function() {
    console.log("Document successfully updated!");
}).catch(function(error) {
    // The document probably doesn't exist.
    console.error("Error updating document: ", error);
});

我通过研究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
获取查询对象,使用
get
获取
中的querySnapshot,然后使用
docs[0]
检索第一个(且仅限于此)documentSnapshot和最后的
ref
,以获得一个参考,使整个内容以后可以更新。

您的更新代码在哪里?@NadhirFalta已编辑,感谢您指出我错过了我的要点您是否使用AngularFirestore
AngularFirestore
?除了更新值,你知道在循环中做什么吗?AngularFirebase,我不知道。我不知道这意味着什么。我知道在循环中做什么吗?我不想在循环中做任何其他事情。目前,只有控制台日志记录用于调试。我可以看到您的构造函数吗?或者我做
const ID=parseInt(userInput)
和get
参数必须是string类型,但必须是int
,或者我不使用parseInt进行此操作,并且它不返回任何对象。因此,我需要新的
值以旧值为基础,我该如何做?我可以简单地说
.update({value:value othervalue})
?@Harri我认为问题在于你的用户输入,你对用户的期望是什么?您的firestoreI ID看起来如何?用户输入最初是一个字符串。我可以很容易地将其转换为int。firestore中的ID是int。或者,是否有一种简单的方法检索firestore生成的ID?链接到谈论
querysnapshotdocument的
ref
的文档