【发布时间】:2024-01-21 04:04:01
【问题描述】:
如何从admin.firestore.FieldValue.serverTimestamp() 中减去日期?
假设我想知道 5 个月前的日期。
通过使用new Date() Javascript 对象,我以毫秒为单位获取日期。
我想将它作为时间戳保存在我的 Firestore 数据库中。我怎样才能做到这一点?
更新:
我用这个函数来发现日期:
function findBirthdate(age){
var monthsAgo;
switch(age){
case "_6months":
monthsAgo = 3;
break;
case "6_12months":
monthsAgo = 9;
break;
case "12_18months":
monthsAgo = 15;
break;
case "18_24months":
monthsAgo = 21;
break;
case "24_months":
monthsAgo = 28;
break;
default:
return;
}
var now = new Date();
return now.setMonth(now.getMonth() - monthsAgo);
}
所以,我打电话给var birth = findBirthdate(age) 并将birth 发送到Firestore,就像
admin.firestore()....update({ birthdate: birth }).then(...
【问题讨论】:
-
由于 Firestore 只存储您传入的
Date值,因此应该像 *.com/questions/7937233/… 一样简单 -
Puf,虽然当我保存
serverTimestamp时它在 Firestore 控制台中非常漂亮(这样我可以通过迷你日历更改日期、月份等,并且据说数据是时间戳类型)。当我按照您建议的方法进行操作时(并且我在问题中谈到使用标准Date对象,我宁愿将1508193230712作为日期,我也可以在我的客户端代码中毫无问题地使用它. 虽然在 Firebase 控制台中进行操作并不好。那么有什么建议吗? -
请显示您如何在数据库中保存“5 个月前”的代码。只要您将其编写为
Date对象,它就应该可以工作,但我们可能会遗漏一些东西。 -
噗,更新代码
-
看起来不错,但尚未在数据库中设置任何内容。如果您没有将它们作为数据库中的日期,那是我唯一能想到的。请注意,拥有minimal complete repro for this 真的很有帮助,因为在中间使用 Stack Overflow 交互式调试问题效率低下。
标签: javascript firebase timestamp google-cloud-firestore