哪位大虾帮忙解释下nodeclub中site这个控制器代码吧,不太明白了
发布于 3年前 作者 shinka 1312 次浏览
tag_ctrl.get_all_tags(function(err,tags){
    if(err) return next(err);
    proxy.trigger('tags',tags); //触发事件
});

var opt = {skip:(page-1)*limit, limit:limit, sort:[['last_reply_at','desc']]};
topic_ctrl.get_topics_by_query({},opt,function(err,topics){
    if(err) return next(err);
    proxy.trigger('topics',topics);
});
opt = {limit:5, sort:[['visit_count','desc']]};
topic_ctrl.get_topics_by_query({},opt,function(err,hot_topics){
    if(err) return next(err);
    proxy.trigger('hot_topics',hot_topics);
});
opt = {limit:5};
user_ctrl.get_users_by_query({is_star:true},opt,function(err,users){
    if(err) return next(err);
    proxy.trigger('stars',users);
}); 
opt = {limit:10, sort:[['score','desc']]};
user_ctrl.get_users_by_query({},opt,function(err,tops){
    if(err) return next(err);
    proxy.trigger('tops',tops);
});
opt = {limit:5, sort:[['create_at','desc']]};
topic_ctrl.get_topics_by_query({reply_count:0},opt,function(err,no_reply_topics){
    if(err) return next(err);
    proxy.trigger('no_reply_topics',no_reply_topics);
});
topic_ctrl.get_count_by_query({},function(err,all_topics_count){
    if(err) return next(err);
    var pages = Math.ceil(all_topics_count/limit);
    proxy.trigger('pages',pages);
});

请问这一些代码是干嘛用的?比如get_users_by_query这个函数,传了个{},是指传了一个空的参数集吧?然后回调里判断如果err,就执行下一次回调是吧?然后那个proxy.trigger('tops’,tops)这一句就猜不到是什么用处了。 还有请问一下在这边定义user_ctrl.get_users_by_query是为啥呢? 谢谢。

4 回复

proxy.trigger('tops’,tops)

触发tops事件而已啊,具体代表什么意义我不是太清楚,但大体意思是,查询到数据,触发某个事件

哦 好的 谢啦

getusersbyquery 函数看名字是获得用户信息,传递空对象进去是为了防止出错,也可以在getusersbyquery函数实体中容错,应为是查mongodb数据库异步操作,所以最后需要防止一个回调函数来执行查询完成的结果。

proxy.trigger 应该是用了类似eventproxy的异步事件队列,当单个异步返回时,触发回调函数。

谢谢 我理解一下…

回到顶部