firebase - 写入实时数据库时保存当前经过身份验证的用户和当前服务器时间戳

时间:2017-12-26 06:50:45

标签: javascript firebase firebase-realtime-database

我在写入实时数据库时尝试保存当前经过身份验证的用户和当前服务器时间戳。不是来自客户,而是来自服务器

这里有一个例子来说明我的想法

let comment = firebase.database().ref().child(`comments/${postId}`).push();
comment.set({comment: 'Hello World'});

我想要保存的是:

comments : {
    "-L1CLZlQ9AAtAYyNanqM" : {
        comment : 'Hello World' ,
        time : 12512623463                // CURRENT FIREBASE SERVER TIME
        userId : "-M1CB342845tAYyNanqM"  // CURRENT AUTHENTICATED USER ID
    } ,
    ...
}
应该从服务器提供

时间 userId

云功能可以解决问题,但我想知道是否还有其他方法可以解决这个问题

1 个答案:

答案 0 :(得分:2)

是的,如果我理解正确,你可以先获得uid

uid:string; // define globally

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    this.uid = user.uid;
  } else {
    // User is signed out.
    // ...
  }
});

现在使用firebase.database.ServerValue.TIMESTAMP来获取服务器时间

let comment = firebase.database().ref().child(`comments/${postId}`).push();
comment.set({
    comment: 'Hello World',
    time:firebase.database.ServerValue.TIMESTAMP,
    userId:this.uid
    });