javascript - (moment.js) format dates retrieved from mongo -
is there way format date objects stored in mongodb after retrieve them?
i tried (updated)
tests.find({}, {roomid: 1, teacher: 1, created: 1}, function(err, result) { if (err) {console.log(err);} result = result.map(function (doc) { console.dir(typeof doc.created); console.dir(doc.created); doc.created = doc.created.format("mm.dd.yyyy"); return doc; }); res.render('showtests', {tests: result}); });
but cannot read property 'format' of undefined
(which odd, because in jade
each test in tests p.col-md-3 #{test.roomid} p.col-md-3 #{test.teacher} p.col-md-3 #{test.created}
prints date "correctly" (as mile-long string).)
i tried add format directly in jade, didn't work either.
do have store formatted? can't solution?
console output (updated)
'object' tue feb 02 2016 20:58:36 gmt+0100 (mitteleuropäische zeit) f:\dropbox\projects\calc\routes\test.js:47 doc.created = doc.created.format("mm.dd.yyyy"); ^ typeerror: doc.created.format not function
if comment out .format() line, works , shows date in template
here's how generate date (update):
var testresults = { addroom: function(id, teacher) { // room pseudoconstructor this[id] = { id: id, teacher: teacher, created: moment(), // ... } } // ... var created = testresults[room].created; var students = testresults[room].students; var problems = testresults[room].testproblems; // save db var test = new tests({ roomid : room, created : created, teacher : name, students : students, problems : problems }); test.save(function(err, result) { if (err) {console.log(err);} else { console.log('test saved db'); socket.emit('testsaved'); } });
answer:
https://coderwall.com/p/egh53a/making-use-of-utility-libraries-in-server-side-jade-templates
you trying format collection of documents. have loop on results , every document format date before passing template.
e.g.
var moment = require('moment'); result = result.map(function (doc) { doc.created = moment(doc.created).format("dd.mm. h:mm"); return doc; });
Comments
Post a Comment