gpt4 book ai didi

javascript - firestore 1.0 不返回 Firestore 时间戳

转载 作者:行者123 更新时间:2023-11-30 11:18:24 24 4
gpt4 key购买 nike

之前,我的代码运行良好并从 firestore 返回时间戳的 Long 值。自 firestore 1.0 发布以来,代码返回 [object Object] 作为结果。尽管它将时间戳保存为 2018 年 6 月 5 日上午 10:38:44 UTC+3,这意味着它当前未在 firestore 数据库中保存为 long 值。我从昨晚开始尝试了一些可能的解决方案,但没有奏效。有什么解决办法吗?

exports.get_time = functions.https.onRequest((request, response) => {
// if (!request.headers.authorization) {
// console.error('No Firebase ID token was passed');
// response.status(403).send('Unauthorized');
// return;
// }
var fieldValue = require("firebase-admin").firestore.FieldValue;
db.collection('times').doc('servertime').set({servertime: fieldValue.serverTimestamp()}).then((ref) => {
db.collection('times').doc('servertime').get().then((snapshot) => {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write(String(snapshot.data()));
response.end();
return null;
}).catch((error) => {
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("Error\n" + error);
response.end();
});
return null;
}).catch((error) => {
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("Error\n" + error);
response.end();
});
});

最佳答案

您的问题可能来自 Firestore SDK 最新版本(JavaScript SDK 版本 5.0.3)中引入的更改:

在此版本中,存储在 Firestore 中的日期对象的行为发生了变化:“存储在 Cloud Firestore 中的时间戳被读回为Firebase 时间戳对象而不是系统日期对象。”

您需要“更新您的代码,期望日期而不是时间戳”,如下所示:

  // Old:
const date = snapshot.get('created_at'); // <- 'created_at' is an example of field name

// New:
const timestamp = snapshot.get('created_at');
const date = timestamp.toDate();

此外,您应该以不同的方式链接您的 promise ,并更改发送响应的方式。您可以观看以下视频,了解有关如何编写 HTTP 函数的更多详细信息:https://www.youtube.com/watch?v=7IkUgCLr5oA

exports.get_time = functions.https.onRequest((request, response) => {

var fieldValue = require("firebase-admin").firestore.FieldValue;

db.collection('times').doc('servertime').set({servertime: fieldValue.serverTimestamp()})
.then((ref) => {

return db.collection('times').doc('servertime').get();

})
.then((snapshot) => {
response.send(snapshot.data());
// return null; no need to return here since it is an HTTP Function
})
.catch((error) => {
response.status(500).send(error)
});
});

关于javascript - firestore 1.0 不返回 Firestore 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50694921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com