Javascript 为推送后创建的对象获取关键点(角度和Firebase)

Javascript 为推送后创建的对象获取关键点(角度和Firebase),javascript,angular,firebase,firebase-realtime-database,angularfire2,Javascript,Angular,Firebase,Firebase Realtime Database,Angularfire2,我在理解如何使用Firebase时遇到问题。我编写了一个函数来推送firebase数据库中的一些数据。我需要在将数据推入数据库后生成密钥 这是我的职责 postData(order: orderInfo) { let uid = firebase.auth().currentUser.uid; this.db.list('transactions').push({ currency: order.currency, total: order.total

我在理解如何使用Firebase时遇到问题。我编写了一个函数来推送firebase数据库中的一些数据。我需要在将数据推入数据库后生成密钥

这是我的职责

  postData(order: orderInfo) {
    let uid = firebase.auth().currentUser.uid;
    this.db.list('transactions').push({
      currency: order.currency,
      total: order.total,
      rate: order.rate,
      uid: uid
    });
    console.log(order.$key);
    this.db.list('transactionsPerUser').update(uid, order.$key);
  }
当我将数据推送到事务路径时,它还会推送到用户uid,这样我就可以将数据从用户数据库链接到事务数据库。我现在想要的是在数据库的其他部分链接用户进行的事务,如下所示:

transactionsPerUser {
     user1 {
           order.$key (key generated by push) : "true"
                     }
            {

正如您所看到的,我正在尝试console.log(order.key),但它返回的是未定义的。我怎样才能解决这个问题??第二,这是构建数据库的正确方法吗?谢谢你的帮助

我会对post行做一个小的更改,并添加/到事务中

postData(order: orderInfo) {
    let uid = firebase.auth().currentUser.uid;

// Change this next line to save the transaction

    var newRef = this.db.list('/transactions').push({
      currency: order.currency,
      total: order.total,
      rate: order.rate,
      uid: uid
    });

// get just the key reference
var newKey= newRef.key;

//then change this refer

    console.log(newKey);

//To update you would change the next line

    this.db.list('transactionsPerUser').update(newKey, order.newInfo);
}

稍后要从列表中的对象获取密钥,可以调用order.$keyHi Gavin。谢谢你的帮助。我现在在控制台中收到这个错误Firebase.update失败:“第一个参数必须是包含要替换的子对象的对象。”这是我对字段进行更新的方式,请注意name是字段的类型,如果(this.order.name){this.db.list('transactionsPerUser')。update(newKey,{name:this.name};}由于您来自两个不同的列表,请不要忘记确保为正确的列表获取正确的键引用您错过了一些步骤,但这对我有帮助,因此我将您的答案标记为正确。这就是缺少的
var newKey=newRef.key;var keyTrans={};keyTrans[newKey]=true;console.log(newKey);this.db.list('transactionsPerUser')。update(uid,keyTrans);