gpt4 book ai didi

javascript - NodeJS 按时间戳延迟显示文档

转载 作者:可可西里 更新时间:2023-11-01 10:45:13 24 4
gpt4 key购买 nike

我有 6 个用户等级。这是他们应该做的:

  • 第一层:立即查看正在发布的帖子。
  • 第二层:60 分钟后
  • 查看相同的帖子
  • 第 3 层:120 分钟后查看相同的帖子
  • 第 4 层:240 分钟后
  • 查看相同的帖子
  • 第 5 层:360 分钟后
  • 查看相同的帖子
  • 第 6 层:24 小时后
  • 查看相同的帖子

每个用户在网站上注册时都会获得他们的等级设置。

现在当有人向网站发布数据时, Mongoose 中的文档结构如下所示:

enter image description here

对于您看到的时间戳,我使用的是 moment.js 并且只是简单的函数:moment(); 这里的所有时间戳都是在用户层应该看到帖子时设置的。

现在我需要通过经过身份验证的用户层获取这些文档。这就是我现在正在做的:

app.get('/', async(req, res) => {
if(req.session.user && req.cookies.user_sid){
let user = await User.findOne({username:req.session.user.username});
if(user.group = "Tier 1") {
let advertisements = await Advertisement.find();
res.render('index', {user, advertisements});
// TIER 1 SEES ALL POSTS IMMEDIATELY.
}
if(user.group = "Tier 2") {
let advertisements = await Advertisement.find();
// Now I need some logic here so the tier 2 users could see post after 60 minutes from when it was posted.
res.render('index', {user, advertisements});
}
} else {
res.render('index');
}
});

我不知道如何从 tier 2 获取结果

最佳答案

我认为存储每个广告添加到系统中的时间可能会更成功 - 这样您就可以根据用户的 tier 修改 Advertisement 对象上的过滤器:

// Imagine the following Advertisements:
[
{
"name": "ad-1",
"created_at": ISODate(2019-02-01)
},
{
"name": "ad-2",
"created_at": ISODate(2019-02-25)
}
]

let offset;
if (user.group === "Tier-1") {
offset = 0;
} else if (user.group === "Tier-2" {
offset = 60 * 60 // remember, it's in seconds!
} else if (user.group === "Tier-3" {
....
}

const now = Date.now();

await db.Users.find({
"created_at" < (now - offset)
});

关于javascript - NodeJS 按时间戳延迟显示文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54874411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com