Javascript 在Firebase中写入数据后读取数据

Javascript 在Firebase中写入数据后读取数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,在实时数据库中创建项目后,我尝试导航到特定ID 该文档提供了一个解决方案,但它没有如图所示工作 在db ref上使用push().set()方法后,我尝试创建一个回调函数,该函数将获取使用push。(.set()方法创建的特定ID,然后使用该ID进行导航 db.ref.push().set({ ... }).then(function(){ router.navigate(ref/ + db.ref.key /) }) 在该参考点创建新对象后,我想使用firebase创建的ID

在实时数据库中创建项目后,我尝试导航到特定ID

该文档提供了一个解决方案,但它没有如图所示工作

在db ref上使用push().set()方法后,我尝试创建一个回调函数,该函数将获取使用push。(.set()方法创建的特定ID,然后使用该ID进行导航

db.ref.push().set({
    ...
}).then(function(){
    router.navigate(ref/ + db.ref.key /)
})

在该参考点创建新对象后,我想使用firebase创建的ID导航到使用该ID的特定路线。

问题在于
db.ref.push()
返回一个具有唯一ID的新参考对象。您无法获得该ID的值。您可以重构一些内容,使其类似于:

let newref = db.ref.push();
newref.set({
  ...
})
.then( () => {
  // You can use "newref" here
  // The last part of the full reference path is in "key"
  let id = newref.key;

  // Do something with the id as part of your route
});
设置

set(值,onComplete)=>返回firebase。承诺包含void

因此,您完全正确地认识到,您应该能够通过回调看到操作已解决,但是承诺不会返回任何密钥

但是,您应该能够链接此事件:

db.ref.push().set({
    ...
}).getKey().then(data => console.log(data))

那么,你用什么库来路由呢?@joelgullander使用主干网路由器。问题是在使用set后无法返回id。这也正是我想要的。不知道为什么文档不起作用。回答得很好,谢谢你的快速回复!