forked from 1self/api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmongoRepository.js
More file actions
109 lines (101 loc) · 3.13 KB
/
mongoRepository.js
File metadata and controls
109 lines (101 loc) · 3.13 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
var mongoDbConnection = require('./lib/connection.js');
var q = require('q');
function defaultFor(arg, val) {
return typeof arg !== 'undefined' ? arg : val;
}
var insert = function (collection, document) {
var deferred = q.defer();
mongoDbConnection(function (qdDb) {
qdDb.collection(collection).insert(document, function (err, insertedRecords) {
if (err) {
console.err(err);
deferred.reject(err);
} else {
deferred.resolve(insertedRecords[0]);
}
});
});
return deferred.promise;
};
var find = function (collection, query, projection) {
var deferred = q.defer();
projection = defaultFor(projection, {});
mongoDbConnection(function (qdDb) {
qdDb.collection(collection).find(query, projection, function (err, documents) {
if (err) {
console.err(err);
deferred.reject(err);
} else {
documents.toArray(function (err, docs) {
deferred.resolve(docs);
});
}
});
});
return deferred.promise;
};
var findOne = function (collection, query, projection) {
var deferred = q.defer();
projection = defaultFor(projection, {});
mongoDbConnection(function (qdDb) {
qdDb.collection(collection).findOne(query, projection, function (err, document) {
if (err) {
console.err(err);
deferred.reject(err);
} else {
deferred.resolve(document);
}
});
});
return deferred.promise;
};
var count = function (collection, query) {
var deferred = q.defer();
mongoDbConnection(function (qdDb) {
qdDb.collection(collection).count(query, function (err, count) {
if (err) {
console.err(err);
deferred.reject(err);
} else {
deferred.resolve(count);
}
});
});
return deferred.promise;
};
var update = function (collection, query, updateObject, options) {
var deferred = q.defer();
options = defaultFor(options, {});
mongoDbConnection(function (qdDb) {
qdDb.collection(collection).update(query, updateObject, options, function (err, updateCount) {
if (err) {
console.err(err);
deferred.reject(err);
} else {
deferred.resolve(updateCount);
}
});
});
return deferred.promise;
};
var remove = function (collection, query, options) {
var deferred = q.defer();
options = defaultFor(options, {});
mongoDbConnection(function (qdDb) {
qdDb.collection(collection).remove(query, options, function (err, removeCount) {
if (err) {
console.err(err);
deferred.reject(err);
} else {
deferred.resolve(removeCount);
}
});
});
return deferred.promise;
};
exports.insert = insert;
exports.find = find;
exports.findOne = findOne;
exports.update = update;
exports.count = count;
exports.remove = remove;