node.js - 日期格式未在 Ejs 中显示,因为它在后端 moment.js 中
问题描述
我正在使用创建帖子的后端 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 来格式化日期,并且控制台看起来很好(2018 年 2 月 10 日)。但是,在将其传递给视图中的 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 中没有找到有用的文档
解决方案
好的,我现在实际上找到了它,对于任何有同样问题的人。如果您使用的是 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'); %>
推荐阅读
- c# - 如何从 Appsettings.json 中读取 EnableQuery 的值
- python - 为什么一旦用户选择其中一个项目,QlistWidget 中的项目就会一直关注它
- tensorflow - 为什么 TensorFlow Eager Execution API 对这个函数给出了错误的答案?
- google-chrome - 模拟伪造的 404,500 状态码以检查前端应用程序的行为
- vue.js - 是否可以在数据中做一个动态变量:vuejs中的{}?
- javascript - 一次仅将选定样式应用于一个 div(不使用 jQuery)
- javascript - 通过 js/jquery 添加 :hover 伪类
- c# - Wixsharp 外部 UI (WPF) 安装路径
- c# - 如何在连接中的字符串中设置前缀?
- tibco-ems - 静态队列的 Tibco 用户权限