我正在为我的家庭实验室制作状态页面项目。我想能够做一段时间,因为状态更新有时间,然后用户的系统占用当前服务器时间并计算出我发送的时间。
到目前为止,我只有创建新状态然后显示路线的路线。
新状态路线
router.post("/status/new", middleware.isLoggedIn, (req, res) => {
var type = req.body.type;
var message = req.body.message;
var date = new Date();
var author = {
id: req.user._id,
username: req.user.username
};
var newStatus = {type:type, message:message, author:author, date:date};
Status.create(newStatus, function(err, newlyCreated){
if(err){
throw(err);
} else {
//redirect back to new status page
res.redirect("/admin/status/new");
}
});
});
显示状态路线
//root route
router.get("/", function(req, res){
Status.find({}, function(err, allStatuses){
if(err){
console.log(err);
} else {
var second = 1000,
minute = 1000 * 60,
hour = minute * 60,
day = hour * 24,
year = day * 365,
time = Date.now();
var diff = time - allStatuses[0].date,
seconds = Math.round(diff / second),
minutes = Math.round(diff / minute),
hours = Math.round(diff / hour),
days = Math.round(diff / day),
years = Math.round(diff / year);
console.log("Difference: " + diff);
if (diff < 1 * minute) {
console.log(seconds + " seconds ago");
}
if (diff > 1 * minute && diff < 1 * hour) {
console.log(minutes + " minutes ago");
}
if (diff > 1 * hour && diff < 1 * day) {
console.log(hours + " hours ago");
}
if (diff > 1 * day && diff < 1 * year) {
console.log(days + " days ago");
}
if (diff > 1 * year) {
console.log(years + " years ago");
}
res.render("index", {statuses:allStatuses});
}
});
});
我使用的第一行EJS阵列代码
<% statuses.forEach(function(status){ %>
之前我曾经使用过moment.js但从来没有使用过像这样的东西。我甚至不确定如何解决这个问题。欢迎任何指导或建议。我似乎无法得到任何比较工作。我想我需要花费当前时间,减去创建时间然后计算提醒并计算出秒,分,小时,天,周,月和年。
我似乎可以弄清楚如何做Date.now()
然后将其保存到数据库,然后在页面加载时执行Date.now()
并得出毫秒差异,但我不确定如何采取差异我发现,然后传递给我的模板。我知道如何通过数组,但我似乎无法想出一种从查询中获取数组的方法,然后从每个数据中找出时间差异,将其保存在数组中,然后能够循环它在我的模板中,我已经循环遍历查询返回的数组。
我所经历的所有尝试都涉及为每个状态/帖子循环遍历整个差异数组。