ExpressJS正在将Route中的时间戳转换为mm/dd/yyyy

ExpressJS Converting Timestamp to mm/dd/yyyy in Route

本文关键字:转换 mm 时间戳 dd yyyy Route ExpressJS      更新时间:2023-09-26

我正在尝试将时间戳转换为mm/dd/yyyy格式,以便在索引页面上显示,我有这样做的功能,但我不确定如何在路由中调用它以用于显示。

我当前的设置返回一个错误,TypeError: Cannot call method 'getMonth' of undefined'

路线:

var express = require('express');
var router = express.Router();
var blogDB = require('../config/blogDB.js');
var Blogpost = require('./models/blogModel.js');
var paginate = require('express-paginate');
//index 
router.use(paginate.middleware(10, 50));

            function dateDisplayed(date){
                var dateCreated = (date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear());
            }
    router.route('/') 

        // START GET method
        .get(function(req, res, next) {
            Blogpost.paginate({}, req.query.page, req.query.limit, function(err, pageCount, blogpost, itemCount) {


                if (err) return next(err)
                        if (err)
                            res.send(err);

                        blogpost.title = req.body.title; // get the blog title
                        blogpost.author = req.body.author; // get the author name
                        blogpost.tagline = req.body.tagline; // get tagline
                        blogpost.content = req.body.content; // get the blog content
                        blogpost.category = req.body.category; // get the category
                        blogpost.tags = req.body.tags; // get the tags
                        blogpost.date = dateDisplayed(req.body.date);



                        res.format({
                            html: function() {
                                res.render('pages/index', {
                                    blogpost: blogpost,
                                    pageCount: pageCount,
                                    itemCount: itemCount
                                })
                            },
                            json: function() {
                                res.json({
                                    object: 'blogpost',
                                    has_more: paginate.hasNextPages(req)(pageCount),
                                    data: blogpost
                                })
                            }
                        }); // END res.format(html, json)
            }); // END Blogpost.paginate
        }); // END GET method
router.route('/admin/posts/create')
    // START POST method
        .post(function(req, res) {
            console.log("New instance");
            var blogpost = new Blogpost(); // create a new instance of a Blogpost model
            blogpost.title = req.body.title; // set the blog title
            blogpost.blogUrl = blogpost.title.toLowerCase().replace(/'s+/g,"-");
            blogpost.author = req.body.author; // set the author name
            blogpost.tagline = req.body.tagline; // set the tagline
            blogpost.content = req.body.content; // set the blog content
            blogpost.category = req.body.category; // set the category
            blogpost.tags = req.body.tags; // set the tags
                //Save Blog Post
                blogpost.save(function(err) {
                    if (err)
                        res.send(err);
                    res.redirect(303, '/'); //NEEDS TO BE CHANGED
                });
        }) // END POST method

        .get(function(req, res) {
            res.render('pages/blogpost-create');
        });
module.exports = router;

blogModel.js:

var mongoose    = require('mongoose');
var mongoosePaginate = require('mongoose-paginate');
var Schema      = mongoose.Schema;

var BlogPostSchema  = new Schema({
        title: String,
        blogUrl: String,
        author: String,
        tagline: String,
        category: String,
        content: String,
        tags: { type: String, lowercase: true },
        date: { type: Date, default: Date.now }
});
BlogPostSchema.plugin( mongoosePaginate );
var Blogpost = mongoose.model("Blogpost", BlogPostSchema);

module.exports = mongoose.model('Blogpost', BlogPostSchema);

index.ejs:

<html>
<head>
    <% include ../partials/head %>
</head>
<body>
    <header>
        <% include ../partials/header %>
    </header>
    <div class="grid">
        <div class="col-9-12">
            <div class="blog-content">
                <% blogpost.forEach(function(blogpost) { %>
                    <tr>
                        <td><h2><a href="#" class="blog-title"><%= blogpost.title %></a></h2></td>
                        <td><h3><%= blogpost.date %></h3></td>
                        <td><h3 class="blog-category"><%= blogpost.category %></h3></td>
                        <td><h3 class="blog-tagline"><i><%= blogpost.tagline %></i></h3></td>
                        <td><p><%=: blogpost.content | truncate:800 | append:'...' %></p></td>
                        <td><a href="/blog/<%= blogpost.blogUrl %>" class="blog-read-more">Read More</a></td>
                    </tr>
                    <% }); %>
            </div>
        </div>
        <div class="col-3-12">
            <div class="sidebar-personal-information">
                <div id="sidebar-social-media">
                    <ul id="sidebar-social-media-list">
                        <li><img class="sidebar-social-media-icons" src="images/linkedin.png"></li>
                        <li><img class="sidebar-social-media-icons" src="images/twitter.png"></li>
                    </ul>
                </div>
                <div id="sidebar-current-titles">
                    <h3>Analytics Strategist</h3>
                    <h4><a href="#">Resolute Digital</a></h4>
                </div>
                <div id="sidebar-short-summary">
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean a massa ante. Vestibulum eu enim est. Curabitur a leo venenatis, semper tellus ac, venenatis nisi. Fusce magna urna, cursus quis egestas et, tincidunt ut nisi. Suspendisse potenti. Praesent congue nec lectus vel posuere.</p>
                </div>
            </div>
            <div class="sidebar-newsletter-signup">
                <h3>NEWSLETTER</h3>
                <p>Sign up for my weekly newsletter</p>
                <form id="email-sign-up-form">
                    EMAIL: <input type="email" id="email-field" placeholder="johndoe@gmail.com"></input>
                    <br>
                    <br>
                    <input id="email-submit" type="submit" value="SUBMIT" />
                </form>
            </div>
        </div>
            <% include ../partials/paginate %>
    </div>


    <footer>
        <% include ../partials/footer %>
    </footer>
</body>
</html>

Date.now返回Unix时间戳(数字)。如果要使用日期方法(如getMonth()),则必须根据时间戳创建一个日期对象:

function dateDisplayed(timestamp) {
    var date = new Date(timestamp);
    return (date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear());
}