Как получить правильный формат даты в node.js? - PullRequest
0 голосов
/ 07 июля 2019

Я пишу веб-приложение с использованием стека MEAN. Мне нужно сохранить дату, предоставленную mongoose, в запись в файле node.js, но формат сохраненной строки, похоже, не учитывается.

Когда я создаю новую запись (с именем actualite), метод .save () вызывает moment () для форматирования pubDate, который правильно распечатывается console.log ("pubDate à sauvegarder vaut:", pubDate) ;.

Однако, похоже, что этот формат даты не сохраняется в данных, как показано в console.log («data à sauvegarder vaut: \ n», data);

// Here is the model of actualite defined in node.js:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const ActualiteSchema = Schema({
    // Actualité
    title: String,
    description: String,
    // Image
    idImage: { type: Schema.Types.ObjectId, ref: 'Images' },
}, {
    timestamps: { createdAt: false, updatedAt: 'pubDate' },
    versionKey: false
});

module.exports = mongoose.model('Actualites', ActualiteSchema);

// Here is the code used to create a new actualite

exports.create = (req, res) => {
    // Requête de validation
    if (!req.body) {
        return res.status(400).send({
            message: "Le contenu d'une actualité ne peut pas être vide !"
        });
    }

    // Créer une actualité
    var actualite = new Actualite({
        // Actualité
        title: req.body.title,
        description: req.body.description,
        // Image
        idImage: req.body.idImage,
        pubDate: req.body.pubDate,
    });

    // Sauvegarder un produit dans la base de données
    actualite.save()
        .then(data => {
            pubDate = moment(actualite.pubDate, 'YYYY-MM-DDTHH:mm:ss.SSSZ').format('ddd, D MMMM YYYY HH:mm:ss ZZ');
            console.log("pubDate à sauvegarder vaut :", pubDate);

            console.log("data à sauvegarder vaut :\n", data);
            console.log("");
            res.send(data);
        }).catch(err => {
            res.status(500).send({
                message: err.message || "Erreur lors de la création de l'actualité"
            });
        });
};

// This is the output generated by console.log():

pubDate à sauvegarder vaut : dim., 7 juillet 2019 19:55:52 +0200
data à sauvegarder vaut :
 { _id: 5d223228d8eb9525807e48cb,
  title: 'Test StackOverflow',
  description: 'this is a test',
  idImage: null,
  pubDate: 2019-07-07T17:55:52.532Z }

Я ожидал, что pubDate в данных будет "тусклым, 7 июля 2019 г. 19:55:52 +0200", а не "2019-07-07T17: 55: 52.532Z"

1 Ответ

0 голосов
/ 08 июля 2019

MongoDB хранит дату в UTC, универсальный способ представления времени.Если вы хотите отобразить другой формат, вы можете использовать moment.format (как вы уже использовали) или агрегацию MongoDB $dateToString.

Вы не сможете изменить базовое представление о том, как хранится Дата.

...