Почему (и как это исправить) при использовании moment.js и указании типа в виде строки он «замораживает» дату? - PullRequest
0 голосов
/ 23 октября 2019

Моя первая проблема заключалась в том, что тип Дата не работал с moment (). Format ("") , если я не изменил тип на String . Но теперь, когда это строка типа, даты по какой-то причине останавливаются и не обновляются при вводе новых данных в БД.

let Blog = new Schema({
    user: {
        type: String,
        required: true

    createdAt: {
        type: Date,
        default: Date.now
    },
    date: { 
        type: String,
        default: moment().format("MMM, Do YY, HH:mm")
    }
});

Так что я пытаюсь сделать, получить дату так, как я хочуотформатировать и вывести его в браузер для клиента, чтобы увидеть, когда они отправили, но дата никогда не обновляется до правильного времени, как если бы он был заморожен.

Вот данные из БД, все они созданы за минуту друг от друга. Почему и как это исправить, пожалуйста?

{
        "_id" : ObjectId("5daf8c6795e4ce4fe0f8ded8"),
        "date" : "Oct 22nd 19, 16:10",
        "user_blog" : "dummy val",
        "CreatedAt" : ISODate("2019-10-22T23:10:31.473Z"),
        "__v" : 0
}
{
        "_id" : ObjectId("5daf8c9395e4ce4fe0f8deda"),
        "date" : "Oct 22nd 19, 16:10", // Same 
        "user_blog" : "dummy val 2",
        "CreatedAt" : ISODate("2019-10-22T23:11:15.920Z"),
        "__v" : 0
}
{
        "_id" : ObjectId("5daf8ce795e4ce4fe0f8dedb"),
        "date" : "Oct 22nd 19, 16:10", // Same
        "user_blog" : "dummy val 3",
        "CreatedAt" : ISODate("2019-10-22T23:12:39.117Z"),
        "__v" : 0
}

Редактировать

Благодаря Нику я теперь знаю, почему он "зависает". Но я потом спросил выше, как это исправить. Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 23 октября 2019

Когда вы создаете новую схему, она берет дату с момента создания схемы. То, что вам нужно будет сделать, это передать объект мангуста на момент, а затем отформатировать его в строку:

moment(Date.now()).format("MMM, Do YY, HH:mm")
...