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
}
}
}
}
}
此代码返回一个快照,但您将其视为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() });