feat(forums): get topic data

This commit is contained in:
OldHawk
2017-07-08 01:57:31 +08:00
parent be796d544c
commit 8e563e8304
3 changed files with 44 additions and 9 deletions

View File

@@ -39,8 +39,7 @@ exports.create = function (req, res) {
exports.list = function (req, res) {
Forum.find()
.sort('order -createdat')
.populate('lastNewTopic')
.populate('lastReplyTopic')
.populate('lastTopic')
.populate('moderators', 'username displayName profileImageURL uploaded downloaded')
.exec(function (err, forums) {
if (err) {
@@ -164,8 +163,7 @@ exports.forumByID = function (req, res, next, id) {
}
Forum.findById(id)
.populate('lastNewTopic')
.populate('lastReplyTopic')
.populate('lastTopic')
.populate('moderators', 'username displayName profileImageURL uploaded downloaded')
.exec(function (err, forum) {
if (err) {

View File

@@ -60,8 +60,6 @@ exports.listTopics = function (req, res) {
.sort('-isTop -updatedAt -createdAt')
.populate('user', 'username displayName profileImageURL uploaded downloaded')
.populate('lastUser', 'username displayName profileImageURL uploaded downloaded')
.populate('_scoreList.user', 'username displayName profileImageURL uploaded downloaded')
.populate('_replies.user', 'username displayName profileImageURL uploaded downloaded')
.exec(function (err, topics) {
if (err) {
return res.status(422).send({
@@ -98,3 +96,41 @@ exports.postNewTopic = function (req, res) {
lastTopic: topic
}).exec();
};
/**
* read forum
* @param req
* @param res
*/
exports.readTopic = function (req, res) {
res.json(req.topic);
};
/**
* Invitation middleware
*/
exports.topicById = function (req, res, next, id) {
if (!mongoose.Types.ObjectId.isValid(id)) {
return res.status(400).send({
message: 'Topic is invalid'
});
}
Topic.findById(id)
.populate('user', 'username displayName profileImageURL uploaded downloaded')
.populate('lastUser', 'username displayName profileImageURL uploaded downloaded')
.populate('_scoreList.user', 'username displayName profileImageURL uploaded downloaded')
.populate('_replies.user', 'username displayName profileImageURL uploaded downloaded')
.exec(function (err, topic) {
if (err) {
return next(err);
} else if (!topic) {
return res.status(404).send({
message: 'No topic with that identifier has been found'
});
}
req.topic = topic;
next();
});
};

View File

@@ -7,17 +7,18 @@ var forumsPolicy = require('../policies/forums.server.policy'),
forums = require('../controllers/forums.server.controller');
module.exports = function (app) {
// Articles collection routes
app.route('/api/forums').all(forumsPolicy.isAllowed)
.get(forums.list);
//Single article routes
app.route('/api/forums/:forumId').all(forumsPolicy.isAllowed)
.get(forums.read);
//Single article routes
app.route('/api/topics/:forumId').all(forumsPolicy.isAllowed)
.post(forums.postNewTopic)
.get(forums.listTopics);
app.route('/api/topics/:forumId/:topicId').all(forumsPolicy.isAllowed)
.get(forums.readTopic);
app.param('topicId', forums.topicById);
};