我尝试使用以下代码从firebase获取服务器时间:
function resolveUnknownProps(obj, resolveKey) {
const handler = {
get(target, key) {
if (
target[key] !== null &&
typeof target[key] === 'object'
) {
return resolveUnknownProps(target[key], resolveKey);
} else if (!target[key]) {
return resolveUnknownProps({ [resolveKey]: true }, resolveKey);
}
return target[key];
},
};
return new Proxy(obj, handler);
}
const user = {}
console.log(resolveUnknownProps(user, 'isUndefined').personalInfo.name.something.else); // { isUndefined: true }
但这给我一个错误说:
二元运算符' /'不能应用于类型的操作数' [任何Hashable:Any]'和' Int'
为什么const { isUndefined } = resolveUnknownProps(user, 'isUndefined').personalInfo.name.something.else;
if (!isUndefined) {
// do someting
}
选择返回TimeIntervel值?
我怎样才能获得服务器的本地时间?
答案 0 :(得分:0)
我不确定如何从servervalue获取时间戳,但是引发了错误,因为您用来创建日期的convenience init(timeIntervalSince1970 secs: TimeInterval)
期望secs在TimeInterval中为Double并传递你试图划分一个不允许的类型(时间戳/ 1000)。
以下是您的双重值应如何使其正常工作的示例
let unixTimestamp = 1480134638.0
let date = Date(timeIntervalSince1970: unixTimestamp)
print(date) -> "2016-11-26 04:30:38 +0000\n"
答案 1 :(得分:0)
您无法使用ServerValue.TIMESTAMP
获取Firebase的服务器时间。
当您将文档写入文档时,它会映射到服务器时间的Firestore时间戳值。
如果您想要服务器时间,有两种方法。
将ServerValue.TIMESTAMP
写入Firestore中的临时文档并从那里阅读。
使用Google Cloud功能将Date()
对象的实例作为response.end()
方法中的字符串。像这样创建一个HTTP端点。然后,您可以使用AJAX请求来获得结果。
const app = (req, res) => {
// this will return the Firebase server time
res.send(new Date());
};