有没有办法让.push() || .push().key
为链式 .push()
生成一个 key ?
function saveItem(){
const itemId = ref.push().key;
let newItem = {id: itemId}
ref.child(`items`)
.push(newItem)
.then(() => ref.child(`users/${uid}/items`)
.push(itemId)
}
在上面的示例中,即使有 itemId
变量,我也会生成 3 个不同的 key 而不是生成一个。
最佳答案
每次 push()
调用都会创建一个新 ID。调用三次的链式推送将创建三个唯一的 id。所以你只需要使用它一次就可以获得唯一的 id。然后如果你想写到某个地方(在你的例子中是'items/id')你可以使用set()
或update()
。 Set 将覆盖给定位置的所有数据。虽然更新将只更新较低级别键的所需字段。示例如下:
function saveItem(){
let ref = firebase.database().ref();
const itemId = ref.child('items').push().key;
let newItem = {some: data}
ref.child(`items/${itemId}`)
.set(newItem)
.then(() => {
let updates = {};
updates[`/items/${itemId}/someField`] = newData;
ref.update(updates);
});
}
关于firebase - 一个生成的链式推送 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074406/