mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
refactor: move getTopicData call to avoid db calls when its not in cache
This commit is contained in:
@@ -31,15 +31,17 @@ topicsController.get = async function getTopic(req, res, next) {
|
|||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
let postIndex = parseInt(req.params.post_index, 10) || 1;
|
let postIndex = parseInt(req.params.post_index, 10) || 1;
|
||||||
|
const topicData = await topics.getTopicData(tid);
|
||||||
|
if (!topicData) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
const [
|
const [
|
||||||
userPrivileges,
|
userPrivileges,
|
||||||
settings,
|
settings,
|
||||||
topicData,
|
|
||||||
rssToken,
|
rssToken,
|
||||||
] = await Promise.all([
|
] = await Promise.all([
|
||||||
privileges.topics.get(tid, req.uid),
|
privileges.topics.get(tid, req.uid),
|
||||||
user.getSettings(req.uid),
|
user.getSettings(req.uid),
|
||||||
topics.getTopicData(tid),
|
|
||||||
user.auth.getFeedToken(req.uid),
|
user.auth.getFeedToken(req.uid),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -47,7 +49,6 @@ topicsController.get = async function getTopic(req, res, next) {
|
|||||||
const pageCount = Math.max(1, Math.ceil((topicData && topicData.postcount) / settings.postsPerPage));
|
const pageCount = Math.max(1, Math.ceil((topicData && topicData.postcount) / settings.postsPerPage));
|
||||||
const invalidPagination = (settings.usePagination && (currentPage < 1 || currentPage > pageCount));
|
const invalidPagination = (settings.usePagination && (currentPage < 1 || currentPage > pageCount));
|
||||||
if (
|
if (
|
||||||
!topicData ||
|
|
||||||
userPrivileges.disabled ||
|
userPrivileges.disabled ||
|
||||||
invalidPagination ||
|
invalidPagination ||
|
||||||
(topicData.scheduled && !userPrivileges.view_scheduled)
|
(topicData.scheduled && !userPrivileges.view_scheduled)
|
||||||
@@ -380,16 +381,14 @@ topicsController.pagination = async function (req, res, next) {
|
|||||||
if (!utils.isNumber(tid)) {
|
if (!utils.isNumber(tid)) {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
const topic = await topics.getTopicData(tid);
|
||||||
const [userPrivileges, settings, topic] = await Promise.all([
|
|
||||||
privileges.topics.get(tid, req.uid),
|
|
||||||
user.getSettings(req.uid),
|
|
||||||
topics.getTopicData(tid),
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!topic) {
|
if (!topic) {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
const [userPrivileges, settings] = await Promise.all([
|
||||||
|
privileges.topics.get(tid, req.uid),
|
||||||
|
user.getSettings(req.uid),
|
||||||
|
]);
|
||||||
|
|
||||||
if (!userPrivileges.read || !privileges.topics.canViewDeletedScheduled(topic, userPrivileges)) {
|
if (!userPrivileges.read || !privileges.topics.canViewDeletedScheduled(topic, userPrivileges)) {
|
||||||
return helpers.notAllowed(req, res);
|
return helpers.notAllowed(req, res);
|
||||||
|
|||||||
Reference in New Issue
Block a user