-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatastore.js
72 lines (66 loc) · 1.97 KB
/
datastore.js
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
var mongourl = '';
var mongoClient = require('mongodb').MongoClient;
var collectionName = 'users';
// callback(success)
function addUser(username, password, callback) {
openCollection(function(db, collection) {
// SELECT * FROM users WHERE name=username
collection.find({'name': username }).toArray(function(err, items) {
// If the user already exists, return failed
if (items && items.length > 0) {
db.close();
return callback(false);
}
// insert a user with name=username, password=password,
// and quotes as an empty array
collection.insert(
{'name': username, 'password': password, 'quotes':[]},
{'safe': true},
function(err, docs) {
db.close();
callback(true);
});
});
});
}
// callback(success)
function addQuote(username, quote, callback) {
openCollection(function(db, collection) {
// SELECT quotes FROM users WHERE name=username
// quotes.push(quote)
// UPDATE users SET quotes=quotes WHERE name=username
collection.findAndModify({'name': username},
[['_id', 'asc']],
{$push: {'quotes': quote}},
{'safe': true},
function(err, object) {
db.close();
if (err || !object) {
return callback(false);
}
return callback(true);
});
});
}
// callback(user)
function getUser(username, callback) {
openCollection(function(db, collection) {
// SELECT * FROM users WHERE name=username
collection.find({'name': username}).toArray(function(err, items) {
db.close();
if (err || !items) return callback(null);
callback(items[0]);
});
});
}
// callback(db, collection)
function openCollection(callback) {
mongoClient.connect(mongourl, function(err, db) {
if (err) throw err;
var collection = db.collection(collectionName);
callback(db, collection);
});
}
exports.addUser = addUser;
exports.addQuote = addQuote;
exports.getUser = getUser;