How do I check if a field is date / datetime in Journey JS

How do I check to see if a field is date / datetime in Journey JS. I found a solution but curious if there is a better solution.

assuming I have a model called opportunity

var testField = "action_date";
var logValue;
var theField = view.opportunity.type.attributes[testField];
var fieldIsDay = theField.type.isDay;

if (fieldIsDay) {
  logValue = getDateFormat(view.opportunity[testField]);
} else {
  logValue = view.opportunity[testField].toString();

Your solution will work for fields that are defined as type="date" on the data model. The code view.opportunity.type.attributes is essentially looking at the data model definition for that object's fields and fields that are defined as type="date" have a special type accessor called isDay.

However, you can also evaluate the type of any of the fields for an object using a bit of a workaround (hack), as follows:

var fieldType = JSON.parse(JSON.stringify(DB.model.first().type.attributes[field])).type; // fieldType will be a string that maps to one of the supported data types you can define in your data model, ie 'text', 'single-choice', 'date', 'boolean', etc.

The reason you need to first stringify the properties and then parse it again is allow you to evaluate the type of the field as a string, not as a Type object.

1 Like