Момент js анализ javascript объекта даты внутри функции asyn c и форматирование его, но не может назначить его тому же свойству - PullRequest
1 голос
/ 26 мая 2020
const moment = require('moment');
const db = require("../db/conn");
const runStmtPromisified = require("../utils/runStmtPromisified");

const f = async () => {
    const stmt = `select * from test;`
    const tests = await runStmtPromisified(stmt, [], db);
    tests.forEach(test => {
        test.created_at = moment(test.created_at).format('LLL') // throws error*
        // const momentDate = moment(test.created_at) // **
        // test.created_at = momentDate.format('LLL') // ** This works, why?
    })
    console.log(tests);
}
f()

Это ошибка *

Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments: 
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: May 26, 2020 6:51 PM, _f: undefined, _strict: undefined, _locale: [object Object]
Error
    at Function.createFromInputFallback...

Я проверил тип test.created_at, это объект. И когда я регистрируюсь, он показывает дату. Итак, я предполагаю, что это объект даты javascript.

Почему разбор переменной в другую переменную, а затем форматирование новой переменной и сохранение ее в исходной переменной работают, но синтаксический анализ, форматирование и сохранение напрямую к исходной переменной не работает?

Имеет ли это какое-либо отношение к тому, что код находится внутри функции asyn c? или тот факт, что я получаю данные из базы данных mysql?

Я пробовал это, и это тоже работает:

let jsDateObj = new Date('12/10/1999')

jsDateObj = moment(jsDateObj).format('LLL')
console.log(jsDateObj)

Спасибо

...