Firebase 一个为链式推送生成的密钥
有没有办法让Firebase 一个为链式推送生成的密钥,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,有没有办法让.push()| |.push().key为链接的.push()生成一个密钥 函数saveItem(){ const itemId=ref.push().key; 让newItem={id:itemId} ref.child(`items`) .push(新项目) .then(()=>ref.child(`users/${uid}/items`) .push(itemId) } 在上面的示例中,我将生成3个不同的键,而不是生成一个键,即使存在itemId变量。每个push()cal
.push()| |.push().key
为链接的.push()
生成一个密钥
函数saveItem(){
const itemId=ref.push().key;
让newItem={id:itemId}
ref.child(`items`)
.push(新项目)
.then(()=>ref.child(`users/${uid}/items`)
.push(itemId)
}
在上面的示例中,我将生成3个不同的键,而不是生成一个键,即使存在itemId
变量。每个push()
call将创建一个新id。被调用三次的链式推送将创建三个唯一id。因此,您只需使用一次即可获得唯一id。然后,如果您想写入某个位置(在您的情况下是写入“items/id”),您可以使用set()
或update()
.Set将覆盖给定位置的所有数据。而update将只更新较低级别的所需字段。示例如下:
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);
});
}