我有一个posts
的数据库。对于每个post
,我想保存不同用户的上次打开时间。所以我决定在后端保存绝对时间(即moment()
),并在前端显示相关时间(即fromNow()
,例如2 days ago
)。
在后端:
var PostSchema = new mongoose.Schema({
... ...
lastOpens: { type: Array, default: [] },
});
PostSchema.methods.updateLastOpens = function (userId, cb) {
... ...
this.lastOpens.push({ time: moment(), userId: userId });
};
在前端:
alert(JSON.stringify(post.lastOpens[j].time))
var x = post.lastOpens[0].time.fromNow()
但是,前端的第一行显示一个非常长的对象{"_isValid":true,"_d":"2017-04-20T02:42:50.932Z","_locale":{"_dayOfMonthOrdinalParseLenient":{},...
。第二个显示TypeError: post.lastOpens[0].time.fromNow is not a function
。
有谁知道哪里出错了以及如何实现这个目标?
答案 0 :(得分:0)
您从后端获取的数据可能不是moment object
。因此,您无法在其上调用fromNow
函数。要调用fromNow,您可以通过在_d
中传递moment constructor
然后在该对象上调用fromNow
来将数据转换为片刻对象
var x = moment(post.lastOpens[j].time._d).fromNow()