正在尝试通过Firebase Cloud函数将DateTime对象发送到Firestore



通过从应用程序直接向Firebase发送DateTime对象,可以自动转换为TimeStamp格式。然而,如果我通过云函数发送相同的对象,我会得到以下错误:

Invalid argument: Instance of 'DateTime'

我尝试使用toString()方法传递对象,并通过运行Date.parseDate.parse(data["birth_date"])进行后端转换。但在Firestore上,数据记录为数字,而不是时间戳。

颤振代码:

//final DateTime birthDate; -> To show you the type
final HttpsCallable callable =
CloudFunctions(region: "europe-west3").getHttpsCallable(
functionName: 'userFunctions-editUser',
);
HttpsCallableResult httpsCallableResult =
await callable.call({"birth_date": birthDate});

服务器端代码:

exports.addUser = functions
.region("europe-west3")
.https.onCall((data, context) => {
const userUid = data["userUid"];
const docRef = admin.firestore().doc(`/users_profils/${userUid}`);
return docRef.set({
...
birth_date: Date.parse(data["birth_date"]),
...
});
});

如何使用Cloud函数将DateTime对象转换为TimeStamp?

Cloud Functions客户端SDK对从平台日期类型到Firestore时间戳的转换一无所知。您必须自己找到一种方法,只传递函数SDK能够理解的有效类型(如数字和字符串(。

一种方法是将DateTime转换为一个数字(通常为epoch后的毫秒(,并将该数字作为参数发送给函数。然后,在函数中,将该数字转换为JavaScriptDate对象,并将其提供给Firestore,后者将其转换为时间戳类型字段。

相关内容

  • 没有找到相关文章

最新更新