Display time elapsed since timestamp of a mongodb object + reformatting timestamp Display time elapsed since timestamp of a mongodb object + reformatting timestamp mongoose mongoose

Display time elapsed since timestamp of a mongodb object + reformatting timestamp


Inject a moment object into your ejs templates that manipulates date objects to display different formats. For example:

var moment = require('moment');var Blog = require('./models/blog');exports.index = function(req, res) {    Blog.find().exec(function(err, blogs){        if (err) throw err;        // send moment to your ejs        res.render('index', { moment: moment, blogs: blogs });    });}

And in your template, use the fromNow() API for displaying the timeago or relative time:

<div id="comments">    <% blog.comments.forEach(function(comment){ %>    <div class="jumbotron comment">        <div class="row">            <div class="col-md-1">                <img class="comment-ico" src = "<%=comment.author.image%>">            </div>            <div class="col-md-7">                <h4><%=comment.author.username%></h4>            </div>            <div class="col-md-4 date">                Created <%= moment(comment.created).fromNow(true) %> ago                             </div>            <!--<div class="col-md-4 date">                Created at <%= moment(comment.created).format('Do MMM YYYY') %>                             </div>-->                       </div>    </div><div><p><%=comment.text%></p></div>

Another alternative is to create an ejs filter function that will return fromNow:

JavaScript

var ejs = require('ejs');var moment = require('moment');ejs.filters.fromNow = function(date) {    return moment(date).fromNow();}

Template

<div class="col-md-4 date">    Created <%= comment.created | fromNow %> ago                 </div>

Remember to have moment added to your package.json file:

npm install moment

UPDATE

Using your actual code, you only need to use the moment object on the line you create the commentCreated variable:

// create new commentComment.create(req.body.comment, function(err, comment){    if(err) {        req.flash("error", "Something went wrong");        console.log(err);    } else {        comment.author.id = req.user._id;        comment.author.username = req.user.username;        comment.author.image = req.user.image;        comment.save();        // connect new comment to campground        blog.comments.push(comment);        blog.save();        var commentCreated = moment(comment.created).fromNow(); // use moment here        if(req.xhr){            res.json({comment: comment, commentCreated: commentCreated, blog: blog});        } else {        //     // redirect to campground show page            req.flash("success", "Successfully added comment");            res.redirect("/blogs/" + blog._id);        }    }});