设置KeystoneJS日期格式

时间:2017-03-25 09:57:55

标签: javascript date format keystonejs

我似乎无法在我的keystone JS博客和其他页面上设置日期格式。

如果我在模板中使用{{publishedDate}}(我使用把手)一切都很好,除了它给我这样的东西:2017年3月23日00:00:00 GMT + 0000(GMT标准时间)显然不是很好。

{{ post.publishedDate.format('D MMMM') }}
{{ post._.publishedDate.format('D MMMM') }}
{{ publishedDate.format('D MMMM') }}

全部返回错误如下: 第18行的解析错误: ... post.publishedDate.format(' D MMMM')}}< ----------------------- ^ 期待' ID',得到'无效'

我也试过改变模型中的东西:

publishedDate: { type: Types.Date, index: true, format: 'YYYY', dependsOn: { state: 'published' }},

其中有许多变化。我已经查看了http://keystonejs.com/docs/database/#fieldtypes-date上的keystone文档,并试图实现它所说的内容,但它仍然无效。

这实际上应该非常简单,我确定它是 - 我只是不知道该怎么做(!)

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

文档上存在下划线方法,而不是属性。您拥有的第二行代码应该可行; the format underscore function将使用您想要的格式设置publishedDate项的格式(如果您不提供参数,则默认为Do MMM YYYY,但您可以通过提供参数来指定您自己的Moment.js格式format)。

{{ post._.publishedDate.format('D MMMM') }}

只要post作为您的Handlebars模板的局部变量(路线中为locals.post = post)提供,就不会返回任何错误。

编辑 3/28/17

在Handlebars中,您必须以与Keystone文档描述的方式不同的方式将数据传递给函数。他们使用Pug,所以你想要做的就是在Pug工作。把手以不同方式评估功能。尝试{{post._.publishedDate.format "D MMMM"}}"D MMMM"字符串传递给格式,然后就可以了。

答案 1 :(得分:0)

谢谢Shea - 超越职责要求的帮助。非常感谢;-)最终解决方案(对于其他感兴趣的人)是 - 如果在循环中运行 - 在模型中创建虚拟,如下所示:

Post.schema.virtual('formattedDate').get(function () { 
    return this._.publishedDate.format("D MMMM"); 
});

然后,在把手模板中使用以下格式:

{{formattedDate}}

如果不在循环中运行,只需使用:

即可

{{_。已发布日期格式" D MMMM"}}