web-dev-qa-db-fra.com

Comment formater les dates de Mongoose dans Node.js?

J'essaie de changer le format des dates que je reçois de ma base de données Mongo. Actuellement, ils ressemblent à ceci:

Fri Sep 16 2011 19:05:17 GMT+0900 (JST)

J'ai essayé d'appeler .toString('yyyy-MM-dd') sur eux mais rien ne change. Je ne sais pas si ce sont des objets Date ou simplement des chaînes brutes.

J'ai essayé de vérifier le manuel de Mongoose et de googler un tas, mais je n'ai encore rien trouvé.

Des idées?

15
Ben Humphreys

vous devez d'abord créer un objet Date:

var date = new Date(dateStr);  // dateStr you get from mongodb

var d = date.getDate();
var m = date.getMonth()+1;
// ...
17
pkyeck

Une façon moderne de le faire est d'utiliser momentjs , à la fois utilisable en nœud et dans le navigateur, super utile et simple à utiliser. Pour le problème actuel, je l'ai résolu comme ceci dans le nœud après avoir suivi toutes les exigences de la documentation:

var moment = require('moment');
var fomatted_date = moment(photo.date_published).format('YYYY-DD-MM');

avec photo.date_published provenant directement de la mangouste.

20
eloone

que diriez-vous de définir votre schéma comme:

var someSchema = new Schema({
    title: String,
    created: Date
});

s.t. la date est stockée sous la forme d'un objet Date dans votre mongoDB. Par conséquent, lorsque vous le relirez, vous disposerez d'un objet Date approprié sur lequel vous pourrez travailler avec les méthodes disponibles.

10
Juri