使用 moment.js 和 Meteor 来写过去的天/小时/月
using moment.js with Meteor to write days / hours / months past
我正在 Meteor 项目中使用 http://momentjs.com/docs/#/displaying/fromnow/...
(包:https://atmospherejs.com/mrt/moment)
我想写出这样的东西
- "User: jsmith joined 4 years ago"
我一定是缺少从 mongoDB 日期到时刻的转换?
json 对象 mongo
{
"_id" : "vWM5Sg67fqxQAzrnv",
"createdAt" : ISODate("2015-03-14T03:39:03.384Z"),
"emails" : [
{... etc.
当我将其输入控制台时
Meteor.user().createdAt;
returns
Mon Mar 16 2015 14:11:54 GMT-0400 (EDT)
在我的 test.js 文件中
这有效
var d= new Date('2011-04-11')
var dd= moment(d).format('MM/DD/YYYY');
console.log (dd); // returns 04/10/2011
这有效
var dd = moment([1954, 5, 8]).fromNow(true); // 4 years
console.log (dd);
returns61岁
this **DOESN'T** work
d = Meteor.user().createdAt;
var dd= moment([d]).fromNow(true);
console.log (dd);
returns TypeError: undefined is not an object (evaluating
Meteor.user().createdAt')
任何帮助将不胜感激,已经尝试了一段时间..
注意:在我的模板中
{{currentUser.createdAt}}
有效(即已发表)
罗布
这可能是您的代码执行时用户尚未登录的竞争条件。解决这个问题的一个好方法是创建一个帮助程序,它将在用户登录时重新运行。但是,在这种情况下,我认为为时刻时间戳添加一个通用帮助程序可能更合适:
Template.registerHelper('fromNow', function(date) {
if (date)
return moment(date).fromNow(true);
});
然后在您的模板中您可以这样做:
{{fromNow currentUser.createdAt}}
因为 currentUser
是反应式的,所以这应该是正确的。另请注意 moment([d])
是不正确的,因为在此示例中 d
是一个 Date
对象(不是像您之前的示例那样的数组文字)。
我正在 Meteor 项目中使用 http://momentjs.com/docs/#/displaying/fromnow/... (包:https://atmospherejs.com/mrt/moment)
我想写出这样的东西
- "User: jsmith joined 4 years ago"
我一定是缺少从 mongoDB 日期到时刻的转换?
json 对象 mongo
{
"_id" : "vWM5Sg67fqxQAzrnv",
"createdAt" : ISODate("2015-03-14T03:39:03.384Z"),
"emails" : [
{... etc.
当我将其输入控制台时
Meteor.user().createdAt;
returns
Mon Mar 16 2015 14:11:54 GMT-0400 (EDT)
在我的 test.js 文件中 这有效
var d= new Date('2011-04-11')
var dd= moment(d).format('MM/DD/YYYY');
console.log (dd); // returns 04/10/2011
这有效
var dd = moment([1954, 5, 8]).fromNow(true); // 4 years
console.log (dd);
returns61岁
this **DOESN'T** work
d = Meteor.user().createdAt;
var dd= moment([d]).fromNow(true);
console.log (dd);
returns TypeError: undefined is not an object (evaluating Meteor.user().createdAt')
任何帮助将不胜感激,已经尝试了一段时间..
注意:在我的模板中
{{currentUser.createdAt}}
有效(即已发表)
罗布
这可能是您的代码执行时用户尚未登录的竞争条件。解决这个问题的一个好方法是创建一个帮助程序,它将在用户登录时重新运行。但是,在这种情况下,我认为为时刻时间戳添加一个通用帮助程序可能更合适:
Template.registerHelper('fromNow', function(date) {
if (date)
return moment(date).fromNow(true);
});
然后在您的模板中您可以这样做:
{{fromNow currentUser.createdAt}}
因为 currentUser
是反应式的,所以这应该是正确的。另请注意 moment([d])
是不正确的,因为在此示例中 d
是一个 Date
对象(不是像您之前的示例那样的数组文字)。