我正在使用正在创建帖子的后端POST请求:
router.post("/", middleware.isLoggedIn, function(req, res) {
var name = req.body.name;
var image = req.body.image;
var description = req.body.description;
var text = req.body.text;
var author = {
id: req.user._id,
username: req.user.username
}
var postedTime = req.body.date;
let createdOn = moment(postedTime).format('DD MM YYYY').toString();
console.log(createdOn);
var newPost = {
name: name,
image: image,
description: description,
text: text,
author: author,
createdOn: createdOn
}
spacePost.create(newPost, function(err, newlyCreated) {
if (err) {
console.log(err);
} else {
res.redirect("/spaceblog")
}
})
我正在使用moment.js格式化日期,并且控制台看起来还不错(02 10 2018)。但是,在将其传递到视图中的ejs时,它再次显示为时间戳。
Posted on Sat Oct 02 2018 00:00:00 GMT+0100 (Central Europe Standard Time)
在EJS上检索代码的代码
<div class="card-footer text-muted">
Posted on
<%= post.createdOn %>
</div>
我读到一个解决方案是使用moment()。在EJS中使用脚本内部对其进行调用(我的标题中也已经包含了脚本)。但是,我将不得不在后端呈现主页(传递moment对象)而不是重定向,但是我没有找到一种方法来取消创建帖子的POST操作。 我在momentjs.com上找不到有用的文档
答案 0 :(得分:0)
好吧,我现在实际上已经找到了它,适合那些将遇到同样问题的人。如果您使用的是Nodejs,则无需在视图页面中插入moment.js脚本。在后端致电Moment作为您的日期:
let createdOn = moment(postedTime).toString();
然后将其添加到app.js(或主要路线的名称)
app.locals.moment = require('moment');
然后您可以在EJS中使用Moment进行调用和格式化:
<%= moment(post.createdOn).format('DD MM YYYY'); %>