NSC*_*der 6 javascript date server-side angularjs firebase
我正在使用带有firebase的angularjs以及我使用的时候
$scope.createdDate = new Date();
Run Code Online (Sandbox Code Playgroud)
它使用客户端上的时间,但我想使用Firebase服务器当前时间,因为客户端时间可能会有所不同.我怎么能在棱角分明呢?
Ded*_*ede 12
对于firebase3,请使用firebase.database.ServerValue.TIMESTAMP
$scope.createdDate = firebase.database.ServerValue.TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
当你打印firebase.database.ServerValue.TIMESTAMP它会给你这个对象{.sv: "timestamp"}
要在客户端上访问firebase服务器的时间戳,首先需要将值写入服务器然后读取值.
firebase.database().ref('currentTime/').update({ time: firebase.database.ServerValue.TIMESTAMP })
.then(function (data) {
firebase.database().ref('currentTime/')
.once('value')
.then(function (data) {
var t = data.val()['time'];
console.log('server time: ', t);
}, function serverTimeErr(err) {
console.log('coulnd nt reach to the server time !');
});
}, function (err) {
console.log ('set time error:', err)
});
Run Code Online (Sandbox Code Playgroud)
我认为必须有一种更简单的方法来直接从客户端读取服务器时间戳.
编辑1:刚发现一个更好的方法是使用1次调用firebase
firebase.database().ref('/.info/serverTimeOffset')
.once('value')
.then(function stv(data) {
console.log(data.val() + Date.now());
}, function (err) {
return err;
});
Run Code Online (Sandbox Code Playgroud)
感谢Jonas Grumann指出了此 Firebase 文档,其中介绍了如何从Firebase 添加服务器时间。
// Get created date from Firebase servers
var createdDate = new Firebase('https://somedomain.firebaseIO.com/post/createDate');
createdDate.set(Firebase.ServerValue.TIMESTAMP);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22007 次 |
| 最近记录: |