更新Firebase列表中的最后一个孩子

问题描述 投票:0回答:1

Firebase JS SDK中的文档有点模糊,但从我收集的内容来看,如果我想更新列表的最后一项,我必须像这样重新编译列表并链接更新?

const { uid } = await firebase.auth().currentUser;

const ref = firebase
    .app()
    .database()
    .ref();

const userRef = ref
    .child('users/' + uid + '/myList')
    .orderByKey()
    .limitToLast(1)
    .update({ stamp: Date.now() });

但没有骰子。

// TypeError: ref.child(...).orderByKey(...).limitToLast(...).update is not a function

更新:

我可以清楚地看到我的ref的正确toString值,但值是不存在的快照?

const { uid } = await firebase.auth().currentUser;

const ref = firebase
    .database()
    .ref('users/' + uid)
    .child('myList');

console.log(ref.toString()); // firebaseio.com/users/XtNjKhhF...lfBn2/myList

ref.on('value', function(snap) {
    console.log('snap val', snap.val()); // never called
});

// data is clearly there, no?
{
  "users" : {
    "Xt....lfABn2" : {
      "myList" : {
        "-LZDd5G2lhNv5ogv" : {
          "start" : 1550728848450
        }
      }
    }
  }
}
javascript firebase
1个回答
0
投票

此代码返回一个快照,但您将其视为ref

const userRef = ref
    .child('users/' + uid + '/myList')
    .orderByKey()
    .limitToLast(1)

您无法对快照执行update()

  .update({ stamp: Date.now() });

这就是您需要将.ref添加到快照的原因

const userRef = ref
    .child('users/' + uid + '/myList')
    .orderByKey()
    .limitToLast(1)
    .ref                            // <- this line here
    .update({ stamp: Date.now() });
© www.soinside.com 2019 - 2024. All rights reserved.