如何获取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