如何获取Firebase云服务器中的服务器时间戳记?

我知道你可以在web,ios和android中获取服务器的时间戳,但是Firebase的新的云端函数呢? 我无法弄清楚如何获得服务器时间戳? 使用案例是我想要时间戳邮件到达时。

在网上它是Firebase.database.ServerValue.TIMESTAMP

但是,这似乎并没有在function节点服务器接口中可用?

我觉得已经很晚了,我可能会错过这里的观点。

编辑

我正在初始化

admin.initializeApp(functions.config().firebase); const fb = admin.database() 

那就这样叫

 Firebase.database.ServerValue.TIMESTAMP 

但是,这是从客户端整合。 在函数上,Firebase不会像这样初始化。 我试过了

 admin.database().ServerValue.TIMESTAMP 

 fb.ServerValue.TIMESTAMP 

由于您已经在使用pipe理员SDK,所以正确的语法是:

 admin.database.ServerValue.TIMESTAMP 

我自己是新的node.js,但Date.now()在我的testing中工作。

编辑

我误解了你的问题 – 没有意识到你想要logging存储在Firebase数据库中的数据。 我以为你只是想在运行你的云function的服务器上得到时间。 如果您想要将收到的电子邮件时间戳记存储在Firebase数据库中,那么使用admin.database.ServerValue.TIMESTAMP毫无疑问是最佳方法。

为了我自己的教育,我写了以下函数来看看时代是如何比较的。 我期望云function服务器和数据库服务器上的时间同步到一个非常准确的时间参考。 当我运行这个函数时,数据库时间戳通常在Date.now()值的一百毫秒内。 稍后的数据库时间戳是合理的,因为它需要一段时间才能连接到数据库并执行写操作。

 exports.timeTest = functions.database.ref('/test/trigger') .onWrite(event => { const now= Date.now(); console.log('now=', now); const timeVals = { dateNow : now, serverTimestamp : admin.database.ServerValue.TIMESTAMP }; return event.data.ref.parent.child('times').update(timeVals); }); 

如果您使用Firebase Admin SDK,则使用正确的语法(已检查2017-12-07):

 const admin = require('firebase-admin'); // Using Cloud Firestore admin.firestore.FieldValue.serverTimestamp() // Using Realtime Database admin.database.ServerValue.TIMESTAMP