[英]JavaScript: Date object convert to string when sent to backend
問題總結
我有一個React Native應用程序,在其中創建一個日期對象,將其分配給startTime並通過Axios將其發送到我的后端node.js服務器。 當我在后端接收到變量后立即鍵入console.log時,類型是字符串。 我已經在前端完成了typeof console.logs,以確保它一直是日期對象,直到它通過Axios發送到后端為止。
由於我是新開發人員,這可能是我不熟悉的axios或HTTPS。 任何幫助將不勝感激。 我已經在下面包含了所有相關代碼,但是如果您認為我應該添加更多內容,請告訴我。
碼
React Native API Call startTime控制台日志作為對象
export const confirmDailyComp = async data =>
new Promise(async (resolve, reject) => {
const { userId, compName, startTime, competitors, lengthType, privacyType } = data; //FIXME: add competition back here, took it out to throw error on purpose
console.log('confirmDailyComp typeof startTime', typeof startTime) //this console logs as an object
try {
const response = await http.post("/v1/route", {
userId,
compName,
startTime,
competitors,
lengthType,
privacyType
});
const competition = response.data.newComp;
resolve(competition);
} catch (err) {
console.log("error fetching friends", err);
reject(err);
}
});
Node.js控制器
startTime控制台以字符串形式記錄日志
當然,在其余的路由中還有更多的代碼,但是為了簡潔我沒有包括它。 如果您認為有必要,我很樂意將其包括在內。
start: async function(req, res, next) {
try {
const {
competitors,
startTime,
userId,
compName,
privacyType,
lengthType,
seasonNum
} = req.body;
console.log("typeof startDate", typeof startTime); // console logs as a string
} catch(err) {
}
嘗試考慮將startTime
發送為時間戳(類似於1567114948292
)。
現在您可以在服務器中獲取此值並獲取時間。
JavaScript Date是一個對象,並且JSON規范沒有日期。 這就是為什么當您通過JSON發送它時,它將被序列化為字符串,因為Axios默認情況下會將它序列化為UTC格式的字符串。
您有三種選擇:
將日期自己轉換為數字格式。
第三個選項是JSON.parse方法,該方法具有一個可選參數來傳遞您的自定義解析器,您可以使用它來構建自定義日期解析器。 您可以從中得到一個想法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.