Firebase:我可以将推送与多位置更新结合起来吗?
Firebase: Can I combine a push with a multi-location update?
我需要用生成的键创建一个新对象并更新一些其他位置,它应该是原子的。有什么方法可以通过多位置更新进行推送,还是我必须使用旧的事务方法?这适用于任何客户端平台,但这里是 JavaScript.
中的示例
var newData = {};
newData['/users/' + uid + '/last_update'] = Firebase.ServerValue.TIMESTAMP;
newData['/notes/' + /* NEW KEY ??? */] = {
user: uid,
...
};
ref.update(newData);
在 Firebase 的 JavaScript SDK 中有两种调用 push
的方法。
使用 push(newObject)
。这将生成一个新的推送 id 并将数据写入具有该 id 的位置。
使用 push()
。这将生成一个新的推送 ID 和 return 对具有该 ID 的位置的引用。这是一个纯客户端操作。
知道#2,你可以很容易地得到一个新的推送id客户端:
var newKey = ref.push().key(); // on newer versions ref.push().key;
然后您可以在多位置更新中使用此密钥。
我发布这篇文章是为了节省未来读者的一些时间。
Frank van Puffelen 的回答(非常感谢这个人!)使用 key()
,但应该是 key
.
key()
抛出 TypeError: ref.push(...).key is not a function
.
另请注意,key
给出了路径的最后一部分,因此您从中获取它的实际引用是无关紧要的。
这是一个通用示例:
var ref = firebase.database().ref('this/is/irrelevant')
var key1 = ref.push().key // L33TP4THabcabcabcabc
var key2 = ref.push().key // L33TP4THxyzxyzxyzxyz
var updates = {};
updates['path1/'+key1] = 'value1'
updates['path2/'+key2] = 'value2'
ref.update(updates);
会创建这个:
{
'path1':
{
'L33TP4THabcabcabcabc': 'value1'
},
'path2':
{
'L33TP4THxyzxyzxyzxyz': 'value2'
}
}
我是firebase新手,如有错误请指正。
我需要用生成的键创建一个新对象并更新一些其他位置,它应该是原子的。有什么方法可以通过多位置更新进行推送,还是我必须使用旧的事务方法?这适用于任何客户端平台,但这里是 JavaScript.
中的示例var newData = {};
newData['/users/' + uid + '/last_update'] = Firebase.ServerValue.TIMESTAMP;
newData['/notes/' + /* NEW KEY ??? */] = {
user: uid,
...
};
ref.update(newData);
在 Firebase 的 JavaScript SDK 中有两种调用 push
的方法。
使用
push(newObject)
。这将生成一个新的推送 id 并将数据写入具有该 id 的位置。使用
push()
。这将生成一个新的推送 ID 和 return 对具有该 ID 的位置的引用。这是一个纯客户端操作。
知道#2,你可以很容易地得到一个新的推送id客户端:
var newKey = ref.push().key(); // on newer versions ref.push().key;
然后您可以在多位置更新中使用此密钥。
我发布这篇文章是为了节省未来读者的一些时间。
Frank van Puffelen 的回答(非常感谢这个人!)使用 key()
,但应该是 key
.
key()
抛出 TypeError: ref.push(...).key is not a function
.
另请注意,key
给出了路径的最后一部分,因此您从中获取它的实际引用是无关紧要的。
这是一个通用示例:
var ref = firebase.database().ref('this/is/irrelevant')
var key1 = ref.push().key // L33TP4THabcabcabcabc
var key2 = ref.push().key // L33TP4THxyzxyzxyzxyz
var updates = {};
updates['path1/'+key1] = 'value1'
updates['path2/'+key2] = 'value2'
ref.update(updates);
会创建这个:
{
'path1':
{
'L33TP4THabcabcabcabc': 'value1'
},
'path2':
{
'L33TP4THxyzxyzxyzxyz': 'value2'
}
}
我是firebase新手,如有错误请指正。