我正在为我的家庭实验室做一个状态页面项目。我希望能够完成一段时间,因为状态更新有时间,然后用户的系统占用当前服务器的时间,并计算出,我发出了多长时间。
到目前为止,我只有创建一个新状态的路径,然后是一个显示路径。
新状态路由
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});
}
});
});代码i用于第一行EJS数组
<% statuses.forEach(function(status){ %>我以前用过moment.js,但从来没有做过这样的事情。我甚至不知道如何着手解决这个问题。欢迎任何指导或建议。我似乎找不到比这更好的工作。我认为我需要取当前的时间,减去创建的时间,然后计算提醒并计算出秒、分钟、小时、天、周、月和年。
我似乎知道如何做Date.now(),然后将其保存到数据库中,然后在页面上加载一个Date.now(),然后计算出毫秒差,但我不确定如何获取所找到的差异,然后将其传递给模板。我知道如何传递数组,但我似乎想不出一种方法从查询中获取数组,然后从每个数组中获取和查找时间差,将其保存在数组中,然后能够在模板中循环遍历它,在模板中循环查询返回的数组。
我所做的所有尝试都涉及循环遍历每个状态/post的整个差异数组。
发布于 2018-02-19 15:03:14
https://stackoverflow.com/questions/48868544
复制相似问题