2014-05-09 4 views
0

Mon application a plusieurs datpickers et pour eux j'utilise le format pour date comme JJ/MM/AAAA Puis j'envoie cette date à mon backend nodejs qui stocke l'objet de données dans mongodb.Enregistrer des dates au format mongodb

À l'avenir mon application aurait besoin de filtrer les données en fonction des plages de dates. Pour cette raison, je ne veux pas stocker les dates en tant que chaînes. Au lieu de cela, je voudrais les stocker dans le format qui me permettra d'effectuer des requêtes à base de gamme sur une collection.

Quel est mon meilleur choix ici compte tenu du fait que je ne peux pas changer le format de la date sur le frontend?

J'apprécierai vraiment si quelqu'un pourrait fournir une réponse détaillée à ceci pour ma compréhension claire du concept.

+1

Utilisez les objets de date native pour l'implémentation de la langue choisie, ils seront sérialiser correctement à MongoDB. Très clairement indiqué dans la documentation. –

Répondre

1

Sur votre backend nodejs, vous pouvez convertir la date de votre chaîne "JJ/MM/AAAA" en objet Date avant de le mettre dans mongodb. quelque chose comme ceci:

var dateStr = "15/12/2013"; // the 15th of Dec, 2013 
var dateArr = dateStr.split('/'); 

// new Date(YYYY, MM, DD); // note that month starts from 0, so 
// you have to subtract 1 
var date = new Date(dateArr[2], dateArr[1] - 1, dateArr[0]); 
console.log(date); // output: Sun Dec 15 2013 00:00:00 GMT-0800 (PST) 

Cette date est maintenant un objet Date que vous pouvez ensuite enregistrer dans le MongoDB et interroger par plage de dates plus tard en cas de besoin

+0

hey ben merci pour la réponse. Comment puis-je aller avec cela si j'ai besoin de gagner du temps aussi bien dans le format: 05/22/2014 12:00 PM ?? – beNerd

+0

Vous pouvez faire: var dateArr = dateStr.split (''); var dateParts = dateArr [0] .split ('/'); var timeParts = dateArr [1] .split (':'); var amPm = dateArr [2]; var date = new Date (dateParts [2], dateParts [1] - 1, dateParts [0], timeParts [0] + (amPm === 'PM'? 12: 0), timeParts [1]); – Ben

+0

J'ai essayé la méthode que vous avez suggérée et lors de la récupération, j'ai eu la date suivante: 2015-10-12T19: 08: 00.000Z. Maintenant, comment puis-je le convertir à la forme d'origine. Un autre problème est que je ne comprends pas comment il est devenu 2015 à partir de 2014. Pouvez-vous s'il vous plaît expliquer si pas de beaucoup d'ennui à vous? – beNerd

Questions connexes