Open gokcer opened 7 months ago
This issue is stale because it has been open for 7 days with no activity. If there are no further updates, a team member will close the issue.
Im having the same issue
Hey @gokcer thanks for your report. Could you share me the code of the Cloud Function that you are using so I can check out?
Sure @ignalauret
Here it is:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
// To avoid deployment errors, do not call admin.initializeApp() in your code
exports.orders = functions.region('us-west1').https.onCall(
(data, context) => {
// Write your code below!
// Write your code above!
return [{
"id": 1,
"date": "2024-03-19T10:07:50.655268+00:00",
"name": "John Due",
"total": 10
}];
}
);
Hey @gokcer thanks for the code. I was able to replicate the issue, and I'm not able to parse the Date as a String (like you have it) nor as a js Date object.
I'm sending a ticket to the Technical team to see if this is a bug, or if there is another way of encoding the dates that you should do on the function.
They will keep you updated on this thread, have a great day!
Hi. Are there any progress about this bug? It blocks our implementations using DateTime.
Best regards..
Im having the same issue
Has your issue been reported?
Current Behavior
When we defined a cloud function return a data type, if data type contains datetime field, json response of cloud function is not converted to datetime.
Expected Behavior
Json response of cloud function should be correctly converted to datetime like string or number fields.
Steps to Reproduce
Reproducible from Blank
Bug Report Code (Required)
IT4olPLq25NIseFE7q6JcMdVryQQNkA4arsWm8pOGDsdF4iuPOxzafTsZRFCTubidHxhKEWKoEcHw+jwvuOTUcc3AE6CRqk71c5qcjvxeHi/aoSUDJGCRmhfBdpMGGKF0p6RmCNAOvZ2Sl0j3TmHevCQYB/vQ5P4Zwh9f6PHaOI=
Context
I am trying to return data type containing a datetime field from cloud functions.
Visual documentation
dartsdk.js:11914 Uncaught (in promise) Error: TypeError: "2024-03-19T10:07:50.655268+00:00": type 'String' is not a subtype of type 'DateTime?' at Object.throw\\ \[as throw\] (dart_sdk.js:11914:11) at Object.\_failedAsCheck (dart_sdk.js:24571:15) at dart_rti.Rti.new.\_generalNullableAsCheckImplementation (dart_sdk.js:24564:14) at dart_rti.Rti.new.\_installSpecializedAsCheck (dart_sdk.js:24509:24) at OrderStruct.fromMap (order_struct.dart:39:28) at MappedListIterable.new. (home_page_widget.dart:109:51) at MappedListIterable.new.elementAt (dart_sdk.js:34795:25) at ListIterator.new.moveNext (dart_sdk.js:34596:55) at JsIterator.next (dart_sdk.js:14044:21) at List.of (dart_sdk.js:139635:18) at MappedListIterable.new.toList (dart_sdk.js:34404:30) at home_page_widget.\_HomePageWidgetState.new. (home_page_widget.dart:109:60) at Generator.next () at dart_sdk.js:49722:33 at \_RootZone.runUnary (dart_sdk.js:49577:59) at \_FutureListener.thenAwait.handleValue (dart_sdk.js:44704:29) at handleValueCallback (dart_sdk.js:45304:49) at \_Future.\_propagateToListeners (dart_sdk.js:45342:17) at \[\_completeWithValue\] (dart_sdk.js:45183:23) at async.\_AsyncCallbackEntry.new.callback (dart_sdk.js:45217:35) at Object.\_microtaskLoop (dart_sdk.js:50026:13) at \_startMicrotaskLoop (dart_sdk.js:50032:13) at dart_sdk.js:45573:9
Additional Info
According to debugging using exported code, problem is caused by fromMap function of generated (DataType)Struct.dart class. It does not support parsing DateTime from string and expects an object but cloud function (and other systems) return datetime data as string.
static OrderStruct fromMap(Map data) => OrderStruct( name: data\['name'\] as String?, total: castToType(data\['total'\]), date: data\['date'\] as DateTime?, <------------ Problematic line. Maybe should call DateTime.parse() instead of cast if value is string since json responses return string for datetime fields. );
Environment