我有6个用户层。这是他们应该做的:
每个用户在网站上注册时都会获得export const setFlightAwareAlert = functions.https.onRequest(async (request, response) => {
const body: {[key: string]: any} = request.body;
const data = new FormData();
Object.keys(body).forEach(key => data.append(key, body[key]));
let alert_id;
try {
alert_id = await axios.post(urls.setAlert, data, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${AUTH_ENCODED}`,
...data.getHeaders()
},
withCredentials: true
})
} catch(err) {
console.log(err)
}
response.json(alert_id && alert_id.data);
});
设置。
现在,当有人将数据发布到网站时,这就是猫鼬中的文档结构的样子:
对于您看到的时间戳,我正在使用moment.js且仅使用普通函数:tier
此处的所有时间戳都在用户层应看到该帖子时设置。
现在,我需要通过经过身份验证的用户层来获取这些文档。这就是我现在正在做的事情:
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');
}
});
答案 0 :(得分:0)
我认为您可以通过存储每个广告添加到系统中的时间来获得更大的成功-这样,您可以根据用户的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)
});