Firebase更新或设置
问题描述:
将关于某人的帖子添加到Firebase数据库后,我想将新帖子的引用添加到该人员。然而这个人可能已经存在也可能不存在。Firebase更新或设置
我:
var ref = new Firebase("https://mydatabase.firebaseio.com/");
var _person = document.getElementById("Person").value;
var _remark = document.getElementById("Remark").value;
var postsRef = ref.child("remarks");
var newPostRef = postsRef.push({
person: _person,
remark: _remark
});
var postID = newPostRef.key();
var personRef = ref.child("person");
personRef.update({
_person: postID
});
然而,创建一个在孩子的人,而不是_person变量的值称为_person节点。使用set()会覆盖现有的人。
例子: 的首次讲话/与子节点创建人一个-JlkbxAKpQs50W7r84gf节点/ 123456
之后,我想创建一个节点人/ 123456(仅当它不存在),比加一个子节点备注/ -JlkbxAKpQs50W7r84gf到它。后ID是自动生成的(Firebase),但该人的ID将从HTML表单中获取。
我该怎么做?
答
根据数据结构的不同,在您使用update
之前,您可能可以获得所需的person
的引用。
所以,如果你的数据看起来是这样的:
{
"remarks" : {
...
},
"person" : {
"123456" : {
"name" : "foo",
...
"blah" : "bar"
},
...
}
}
而且document.getElementById("Person").value
给你123456
,你可以得到这样的参考:
var personRef = ref.child("person").child(_person);
那么你一定要查看它是否存在,如果是,请更新它:
personRef.once('value', function(snapshot) {
if(snapshot.val() === null) {
/* does not exist */
} else {
snapshot.ref().update({"postID": postID});
}
});
在你上面的例子中,我相信'ref'是一个pr操作,而不是一种方法。换句话说,它应该是'snapshot.ref'而不是'snapshot.ref()'。我不确定这是否在更新版本的Firebase中发生了变化,但最近我遇到了这个问题。 – Andi 2017-08-04 14:50:40
snapshot.ref()不是函数,并且在根引用上调用snaphot.ref将返回null – Nandhu 2017-10-23 15:42:57