Javascript Firestore-查询,然后更新
我想返回一个具有特定ID的项目,并对其执行更新操作。我的查询得到了正确的结果,但它不允许我更新它 我尝试了以下教程: 并阅读文档。两个人都没用。同一主题的其他线程是不同的 我有一个对象数据库,它的唯一ID存储为整数。 我有一个HTML表单来获取ID作为用户输入,下面的查询检索相应的对象 我试过这个。查询成功了,但更新没有成功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
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已编辑,感谢您指出我错过了我的要点您是否使用AngularFirestoreAngularFirestore
?除了更新值,你知道在循环中做什么吗?AngularFirebase,我不知道。我不知道这意味着什么。我知道在循环中做什么吗?我不想在循环中做任何其他事情。目前,只有控制台日志记录用于调试。我可以看到您的构造函数吗?或者我做const ID=parseInt(userInput)
和get参数必须是string类型,但必须是int
,或者我不使用parseInt进行此操作,并且它不返回任何对象。因此,我需要新的值以旧值为基础,我该如何做?我可以简单地说.update({value:value othervalue})
?@Harri我认为问题在于你的用户输入,你对用户的期望是什么?您的firestoreI ID看起来如何?用户输入最初是一个字符串。我可以很容易地将其转换为int。firestore中的ID是int。或者,是否有一种简单的方法检索firestore生成的ID?链接到谈论querysnapshotdocument的ref
的文档