You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nodebb/src/posts/category.js

52 lines
1.0 KiB
JavaScript

'use strict';
9 years ago
var async = require('async');
var topics = require('../topics');
module.exports = function(Posts) {
Posts.getCidByPid = function(pid, callback) {
async.waterfall([
function(next) {
Posts.getPostField(pid, 'tid', next);
},
function(tid, next) {
topics.getTopicField(tid, 'cid', next);
9 years ago
}
], callback);
};
Posts.getCidsByPids = function(pids, callback) {
Posts.getPostsFields(pids, ['tid'], function(err, posts) {
if (err) {
return callback(err);
}
var tids = posts.map(function(post) {
return post.tid;
}).filter(function(tid, index, array) {
return tid && array.indexOf(tid) === index;
});
topics.getTopicsFields(tids, ['cid'], function(err, topics) {
if (err) {
return callback(err);
}
var map = {};
topics.forEach(function(topic, index) {
if (topic) {
map[tids[index]] = topic.cid;
}
});
var cids = posts.map(function(post) {
return map[post.tid];
});
callback(null, cids);
});
});
};
};