forked from jixiangac/lili
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbase.js
More file actions
165 lines (159 loc) · 4.02 KB
/
Copy pathbase.js
File metadata and controls
165 lines (159 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/**
* base.js For Models
*/
//配置文件
var config = require('../config');
//工具
var Utils = require('./utils.js');
//数据库连接
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
//数据库初始化
var jixiang = function(){
// var db = db || config.db;
this.db = new Db(config.db,new Server(config.host,Connection.DEFAULT_PORT,{
auto_reconnect:true
},{}));
this.db.open(function(err,db){
if(err)console.log(err)
// db.auth('mm','mmm');
});
}
//获取聚集操作
jixiang.prototype.getCollection = function(collection,callback){
this.db.collection(collection,function(err,db){
if(err){
callback(err);
}else{
callback(null,db);
}
})
}
//mongodb数据库的_id自增
jixiang.prototype.getId = function(collection,callback){
this.getCollection('ids',function(err,db){
if(err)callback(err);
else{
db.findAndModify({
colname:collection
},
[],{
$inc:{id:1}
},{
new:true
},function(err,doc){
if(!doc){//找不到该行时插入新的行
db.insert({colname:collection,id:1},function(err){
if(err) callback(err);
else callback(null,1);
});
}else{
if(err) callback(err);
else callback(null,doc.id);
}
})
}
})
}
module.exports = new jixiang();
/*--------------------------
数据的各项操作
--------------------------*/
//数据的保存
jixiang.prototype.save = function(data,collection,callback){
var self = this;
this.getId(collection,function(err,id){
if(err)callback(err);
else{
data._id = id;
self.getCollection(collection,function(err,db){
if(err)callback(err);
else{
db.insert(data,{safe:true},function(err,doc){
callback(err,doc);
})
}
})
}
})
}
//根据条件获取数据
jixiang.prototype.get = function(condition,collection,callback){
this.getCollection(collection,function(err,db){
if(err)callback(err);
else{
var query = condition.query || {}
,get = condition.get || {}
,sort = condition.sort || {_id:1}
,skip = condition.skip || 0
,limit = condition.limit || 0
;
db.find(query,get).sort(sort).skip(skip).limit(limit).toArray(function(err,doc){
if(err) callback(err);
else callback(null,doc);
});
}
});
}
//获取一条数据
jixiang.prototype.getOne = function(query,collection,callback){
this.getCollection(collection,function(err,db){
if(err)callback(err);
else{
db.findOne(query,function(err,doc){
if(doc)callback(err,doc);
else callback(err,null);
});
}
});
}
//根据_id进行数据的删除
jixiang.prototype.delById = function(id,collection,callback){
this.getCollection(collection,function(err,db){
if(err)callback(err);
else{
db.remove({_id:id},function(err){
callback(err);
})
}
});
}
//自增+1的数据操作,比如有用没用的点击,赞的点击
jixiang.prototype.selfplus = function(id,condition,collection,callback){
this.getCollection(collection,function(err,db){
if(err)callback(err);
else{
db.findAndModify({_id:id},[],{
'$inc':condition.update
},{
new : true
},function(err){
callback(err);
});
}
});
}
//获取数量
jixiang.prototype.count = function(query,collection,callback){
this.getCollection(collection,function(err,db){
if(err)callback(err);
else{
db.count(query,function(err,count){
if(err)callback(err);
else callback(null,count);
})
}
});
}
//更新 query,modify
jixiang.prototype.update = function(condition,collection,callback){
this.getCollection(collection,function(err,db){
if(err)callback(err);
else{
db.update(condition.query,condition.modify,{safe:true},function(err){
callback(err);
});
}
});
}