\$\begingroup\$
\$\endgroup\$
let formData = new FormData();
formData.append('File', document.file);
formData.append('DocumentType', document.documentType);
product = {
...values,
productType: productT,
};
for (var key in product) {
if (key != 'createdDate' && key != 'expirationDate') {
formData.append(key, product[key]);
} else {
formData.append(key, new Date(product[key]).toUTCString());
}
}
await createproduct(formData);
I need to send file and other data about product in one request so I added all the stuffs in FormData
, and I have issues only with Dates
, I must convert it to date
because somehow it get confused if I don't convert it.
Can I somehow refactor this code to do this part about dates more elegant, if condition
in for loop
somehow smells bad..
P.S EDIT:
for (var key in product) {
const transform = DateTransformer[key];
formData.append(key, transform ? transform[product[key]] : product[key]);
}
Roxy'ProRoxy'Pro
asked Nov 15, 2019 at 20:37
1 Answer 1
\$\begingroup\$
\$\endgroup\$
2
Transformation rules
Especially useful if there are many fields and each needs a unique rule.
const dateToUTCString = d => new Date(d).toUTCString();
const DataTransformer = {
createdDate: dateToUTCString,
expirationDate: dateToUTCString,
};
// [...]
for (const [key, calue] of Object.entries(product)) {
const transform = DataTransformer[key];
formData.append(key, transform ? transform(value) : value);
}
answered Nov 16, 2019 at 11:43
-
\$\begingroup\$ I don't understand how this works.. \$\endgroup\$Roxy'Pro– Roxy'Pro2019年11月18日 07:59:23 +00:00Commented Nov 18, 2019 at 7:59
-
\$\begingroup\$ The code is a standard JavaScript so I'm not sure what to clarify. \$\endgroup\$woxxom– woxxom2019年11月18日 08:54:43 +00:00Commented Nov 18, 2019 at 8:54
lang-js