4
4
*/
5
5
var mongodb = require ( './db' ) ;
6
6
var connect = require ( './connect' ) ;
7
-
7
+ var async = require ( 'async' ) ;
8
8
var topic = { } ;
9
9
10
10
module . exports = topic ;
@@ -13,7 +13,7 @@ module.exports = topic;
13
13
//添加新话题
14
14
topic . addTopic = function ( obj , callback ) {
15
15
global . db . collection ( 'topic' , function ( err , collection ) {
16
- //增加一个自增uid,官方有优化
16
+ //增加一个自增uid,官方有优化,如果有删除操作,会导致bug
17
17
collection . find ( ) . sort ( { _id : - 1 } ) . limit ( 1 ) . toArray ( function ( err , items ) {
18
18
if ( items . length > 0 ) {
19
19
obj . uid = items [ 0 ] . uid + 1 ;
@@ -54,31 +54,65 @@ topic.myTopic=function(name,size,num,callback){
54
54
//用户关注对象的话题
55
55
topic . aboutTopic = function ( name , size , num , callback ) {
56
56
//先查找这个用户关注对象
57
- global . db . collection ( 'user' , function ( err , collection ) {
58
- collection . findOne ( { name :name } , function ( err , obj ) {
59
- if ( ! err ) {
60
- if ( obj . watch . length > 0 ) {
61
- //存在关注用户
62
- var arr = [ ] ;
63
- obj . watch . forEach ( function ( k ) {
64
- arr . push ( { name :k } ) ;
65
- } ) ;
66
- //在topic中查找他关注用户的话题
67
- global . db . collection ( 'topic' , function ( err , collection ) {
68
- collection . find ( { $or :arr } ) . sort ( { _id : - 1 } ) . skip ( num ) . limit ( size ) . toArray ( function ( err , items ) {
69
- if ( err ) {
70
- callback ( { isOk :false } ) ;
71
- } else {
72
- callback ( { isOk :true , data :items } ) ;
73
- }
74
- } ) ;
75
- } ) ;
76
- } else {
77
- callback ( { isOk :true , data :[ ] } ) ;
78
- }
79
- }
80
- } ) ;
81
- } ) ;
57
+ // global.db.collection('user',function(err,collection){
58
+ // collection.findOne({name:name},function(err,obj){
59
+ // if(!err){
60
+ // if(obj.watch.length>0){
61
+ // //存在关注用户
62
+ // var arr=[];
63
+ // obj.watch.forEach(function(k){
64
+ // arr.push({name:k});
65
+ // });
66
+ // //在topic中查找他关注用户的话题
67
+ // global.db.collection('topic',function(err,collection){
68
+ // collection.find({$or:arr}).sort({_id: -1}).skip(num).limit(size).toArray(function(err,items){
69
+ // if(err){
70
+ // callback({isOk:false});
71
+ // }else{
72
+ // callback({isOk:true,data:items});
73
+ // }
74
+ // });
75
+ // });
76
+ // }else{
77
+ // callback({isOk:true,data:[]});
78
+ // }
79
+ // }
80
+ // });
81
+ // });
82
+
83
+ async . waterfall ( [
84
+ function ( cb ) {
85
+ //先查找这个用户关注对象
86
+ global . db . collection ( 'user' , function ( err , collection ) {
87
+ collection . findOne ( { name :name } , function ( err , obj ) {
88
+ if ( ! err ) {
89
+ if ( obj . watch . length > 0 ) {
90
+ //存在关注用户
91
+ var arr = [ ] ;
92
+ obj . watch . forEach ( function ( k ) {
93
+ arr . push ( { name :k } ) ;
94
+ cb ( null , arr ) ;
95
+ } ) ;
96
+ } else {
97
+ callback ( { isOk :true , data :[ ] } ) ;
98
+ }
99
+ }
100
+ } ) ;
101
+ } ) ;
102
+ } ,
103
+ function ( arr , cb ) {
104
+ //在topic中查找他关注用户的话题
105
+ global . db . collection ( 'topic' , function ( err , collection ) {
106
+ collection . find ( { $or :arr } ) . sort ( { _id : - 1 } ) . skip ( num ) . limit ( size ) . toArray ( function ( err , items ) {
107
+ if ( err ) {
108
+ callback ( { isOk :false } ) ;
109
+ } else {
110
+ callback ( { isOk :true , data :items } ) ;
111
+ }
112
+ } ) ;
113
+ } ) ;
114
+ }
115
+ ] ) ;
82
116
} ;
83
117
84
118
//@ 股票的话题
@@ -97,32 +131,67 @@ topic.stockTopic=function(uid,stockName,size,num,callback){
97
131
//用户关注的股票的相关话题
98
132
topic . aboutStockTopic = function ( name , size , num , callback ) {
99
133
//先查找这个用户关注的股票
100
- global . db . collection ( 'user' , function ( err , collection ) {
101
- collection . findOne ( { name :name } , function ( err , obj ) {
102
- if ( ! err ) {
103
- if ( ! ! obj && obj . stock . length > 0 ) {
104
- //存在关注
105
- var arr = [ ] ;
106
- //这里只能查询sh600171这种code代码
107
- obj . stock . forEach ( function ( k ) {
108
- arr . push ( { aboutStockcode :k } ) ;
109
- } ) ;
110
- //在topic中查找他关注用户的话题
111
- global . db . collection ( 'topic' , function ( err , collection ) {
112
- collection . find ( { $or :arr } ) . sort ( { _id : - 1 } ) . skip ( num ) . limit ( size ) . toArray ( function ( err , items ) {
113
- if ( err ) {
114
- callback ( { isOk :false } ) ;
115
- } else {
116
- callback ( { isOk :true , data :items } ) ;
117
- }
118
- } ) ;
119
- } ) ;
120
- } else {
121
- callback ( { isOk :true , data :[ ] } ) ;
122
- }
123
- }
124
- } ) ;
125
- } ) ;
134
+ // global.db.collection('user',function(err,collection){
135
+ // collection.findOne({name:name},function(err,obj){
136
+ // if(!err){
137
+ // if(!!obj&&obj.stock.length>0){
138
+ // //存在关注
139
+ // var arr=[];
140
+ // //这里只能查询sh600171这种code代码
141
+ // obj.stock.forEach(function(k){
142
+ // arr.push({aboutStockcode:k});
143
+ // });
144
+ // //在topic中查找他关注用户的话题
145
+ // global.db.collection('topic',function(err,collection){
146
+ // collection.find({$or:arr}).sort({_id: -1}).skip(num).limit(size).toArray(function(err,items){
147
+ // if(err){
148
+ // callback({isOk:false});
149
+ // }else{
150
+ // callback({isOk:true,data:items});
151
+ // }
152
+ // });
153
+ // });
154
+ // }else{
155
+ // callback({isOk:true,data:[]});
156
+ // }
157
+ // }
158
+ // });
159
+ // });
160
+
161
+ async . waterfall ( [
162
+ function ( cb ) {
163
+ //先查找这个用户关注的股票
164
+ global . db . collection ( 'user' , function ( err , collection ) {
165
+ collection . findOne ( { name :name } , function ( err , obj ) {
166
+ if ( ! err ) {
167
+ if ( ! ! obj && obj . stock . length > 0 ) {
168
+ //存在关注
169
+ var arr = [ ] ;
170
+ //这里只能查询sh600171这种code代码
171
+ obj . stock . forEach ( function ( k ) {
172
+ arr . push ( { aboutStockcode :k } ) ;
173
+ } ) ;
174
+ cb ( null , arr ) ;
175
+ } else {
176
+ callback ( { isOk :true , data :[ ] } ) ;
177
+ }
178
+ }
179
+ } ) ;
180
+ } ) ;
181
+ } ,
182
+ function ( arr , cb ) {
183
+ //在topic中查找他关注用户的话题
184
+ global . db . collection ( 'topic' , function ( err , collection ) {
185
+ collection . find ( { $or :arr } ) . sort ( { _id : - 1 } ) . skip ( num ) . limit ( size ) . toArray ( function ( err , items ) {
186
+ if ( err ) {
187
+ callback ( { isOk :false } ) ;
188
+ } else {
189
+ callback ( { isOk :true , data :items } ) ;
190
+ }
191
+ } ) ;
192
+ } ) ;
193
+ }
194
+ ] ) ;
126
195
} ;
127
196
128
197
//@ 我的话题
@@ -143,29 +212,66 @@ topic.atmeTopic=function(name,size,num,callback){
143
212
*/
144
213
//添加话题的评论
145
214
topic . addComment = function ( isForward , obj , callback ) {
146
- global . db . collection ( 'comment' , function ( err , collection ) {
147
- collection . insert ( obj , { safe : true } , function ( err , topicItem ) {
148
- if ( ! err ) {
149
- if ( isForward ) {
150
- //topic 评论量+1,转发+1操作
151
- global . db . collection ( 'topic' , function ( err , collection ) {
152
- var pid = Number ( obj . pid ) ;
153
- collection . update ( { uid :pid } , { $inc :{ comment :1 , forward :1 } } , function ( err , items ) {
154
- callback ( { isOk :true , data :topicItem , add :"commentAndForward" } ) ;
155
- } ) ;
215
+ // global.db.collection('comment',function(err,collection){
216
+ // collection.insert(obj,{safe: true},function(err,topicItem){
217
+ // if(!err){
218
+ // if(isForward){
219
+ // //topic 评论量+1,转发+1操作
220
+ // global.db.collection('topic',function(err,collection){
221
+ // var pid=Number(obj.pid);
222
+ // collection.update({uid:pid},{$inc:{comment:1,forward:1}},function(err,items){
223
+ // callback({isOk:true,data:topicItem,add:"commentAndForward"});
224
+ // });
225
+ // });
226
+ // }else{
227
+ // //topic 评论量+1操作
228
+ // global.db.collection('topic',function(err,collection){
229
+ // var pid=Number(obj.pid);
230
+ // collection.update({uid:pid},{$inc:{comment:1}},function(err,items){
231
+ // callback({isOk:true,data:topicItem,add:"comment"});
232
+ // });
233
+ // });
234
+ // }
235
+ // }
236
+ // });
237
+ // });
238
+
239
+ //异步执行
240
+ async . parallel ( [
241
+ function ( cb ) {
242
+ //将评论插入comment表
243
+ global . db . collection ( 'comment' , function ( err , collection ) {
244
+ collection . insert ( obj , { safe : true } , function ( err , topicItem ) {
245
+ cb ( null , topicItem ) ;
246
+ } ) ;
247
+ } ) ;
248
+ } ,
249
+ function ( cb ) {
250
+ //同时更新topic表中被评论的部分
251
+ if ( isForward ) {
252
+ //topic 评论量+1,转发+1操作
253
+ global . db . collection ( 'topic' , function ( err , collection ) {
254
+ var pid = Number ( obj . pid ) ;
255
+ collection . update ( { uid :pid } , { $inc :{ comment :1 , forward :1 } } , function ( err , items ) {
256
+ cb ( null , "commentAndForward" ) ;
257
+ //callback({isOk:true,data:topicItem,add:"commentAndForward"});
156
258
} ) ;
157
- } else {
158
- //topic 评论量+1操作
159
- global . db . collection ( 'topic' , function ( err , collection ) {
160
- var pid = Number ( obj . pid ) ;
161
- collection . update ( { uid :pid } , { $inc :{ comment :1 } } , function ( err , items ) {
162
- callback ( { isOk :true , data :topicItem , add :"comment" } ) ;
163
- } ) ;
259
+ } ) ;
260
+ } else {
261
+ //topic 评论量+1操作
262
+ global . db . collection ( 'topic' , function ( err , collection ) {
263
+ var pid = Number ( obj . pid ) ;
264
+ collection . update ( { uid :pid } , { $inc :{ comment :1 } } , function ( err , items ) {
265
+ cb ( null , "comment" ) ;
266
+ //callback({isOk:true,data:topicItem,add:"comment"});
164
267
} ) ;
165
- }
166
- }
167
- } ) ;
168
- } ) ;
268
+ } ) ;
269
+ }
270
+ }
271
+ ] ,
272
+ function ( err , results ) {
273
+ callback ( { isOk :true , data :results [ 0 ] , add :results [ 1 ] } ) ;
274
+ } ) ;
169
275
} ;
170
276
171
277
//获取话题的评论
0 commit comments