|
1 | | -function NoSQLCRUDAdapter(dbConnectFunction) { |
| 1 | +function NoSQLCRUDAdapter(dbConnectFunction, getId) { |
2 | 2 | function getObjects(collectionName, filter, callback) { |
3 | 3 | filter = filter || []; |
4 | 4 | let query = {}; |
5 | 5 | filter.forEach(fi => query[fi.name] = fi.value); |
6 | | - dbConnectFunction((dbo, finalizeCallback) => |
7 | | - dbo.collection(collectionName).find(query).toArray((error, results) => { |
8 | | - finalizeCallback(); |
9 | | - if (error) { |
10 | | - throw error; |
11 | | - } |
12 | | - callback(results); |
13 | | - }) |
| 6 | + dbConnectFunction((db, finalizeCallback) => { |
| 7 | + db.collection(collectionName).find(query).toArray() |
| 8 | + .then((results) => { |
| 9 | + callback(results); |
| 10 | + finalizeCallback(results); |
| 11 | + }) |
| 12 | + .catch(() => { |
| 13 | + console.error(JSON.stringify(arguments)); |
| 14 | + }); |
| 15 | + } |
14 | 16 | ); |
15 | 17 | } |
16 | 18 |
|
17 | | - function deleteObject(tableName, idValue, callback) { |
18 | | - const command = "DELETE FROM " + tableName + " WHERE id='" + idValue + "'"; |
19 | | - dbConnectFunction(command, (error, results) => { |
20 | | - if (error) { |
21 | | - throw error; |
| 19 | + function deleteObject(collectionName, idValue, callback) { |
| 20 | + dbConnectFunction((db, finalizeCallback) => { |
| 21 | + db.collection(collectionName).deleteMany({ id: idValue }) |
| 22 | + .then((results) => { |
| 23 | + callback(results); |
| 24 | + finalizeCallback(results); |
| 25 | + }) |
| 26 | + .catch(() => { |
| 27 | + console.error(JSON.stringify(arguments)); |
| 28 | + }); |
22 | 29 | } |
23 | | - callback(results); |
24 | | - }); |
| 30 | + ); |
25 | 31 | } |
26 | 32 |
|
27 | | - function createObject(tableName, object, callback) { |
28 | | - const valueNames = []; |
29 | | - const valueIndexes = []; |
30 | | - const values = []; |
31 | | - Object.keys(object).forEach((key, index) => { |
32 | | - if(object[key] !== undefined) { |
33 | | - valueNames.push(key); |
34 | | - valueIndexes.push("$" + (index + 1)); |
35 | | - values.push(object[key]); |
36 | | - } |
37 | | - }); |
38 | | - const command = "INSERT INTO " + tableName + " (" + valueNames.join(", ") + ") VALUES (" + valueIndexes.join(", ") + ") RETURNING id"; |
39 | | - dbConnectFunction(command, values, (error, results) => { |
40 | | - if (error) { |
41 | | - throw error; |
| 33 | + function createObject(collectionName, object, callback) { |
| 34 | + object.id = object.id || getId(); |
| 35 | + dbConnectFunction((db, finalizeCallback) => { |
| 36 | + db.collection(collectionName).insertOne(object) |
| 37 | + .then((results) => { |
| 38 | + callback(object.id); |
| 39 | + finalizeCallback(results); |
| 40 | + }) |
| 41 | + .catch(() => { |
| 42 | + console.error(JSON.stringify(arguments)); |
| 43 | + }); |
42 | 44 | } |
43 | | - // console.log(JSON.stringify(results)); |
44 | | - callback(results.rows[0].id); |
45 | | - }); |
| 45 | + ); |
46 | 46 | } |
47 | 47 |
|
48 | | - function updateObject(tableName, object, callback) { |
49 | | - const valueNames = []; |
50 | | - const values = []; |
51 | | - Object.keys(object).forEach((key, index) => { |
52 | | - if(object[key] !== undefined) { |
53 | | - valueNames.push(key + " = $" + (index + 1)); |
54 | | - values.push(object[key]); |
55 | | - } |
56 | | - }); |
57 | | - const command = "UPDATE " + tableName + " SET " + valueNames.join(", ") + " WHERE id = '" + object.id + "'"; |
58 | | - dbConnectFunction(command, values, (error, results) => { |
59 | | - if (error) { |
60 | | - throw error; |
| 48 | + function updateObject(collectionName, object, callback) { |
| 49 | + dbConnectFunction((db, finalizeCallback) => { |
| 50 | + db.collection(collectionName).updateOne({ id: object.id }, { $set: object }) |
| 51 | + .then((results) => { |
| 52 | + callback(results); |
| 53 | + finalizeCallback(results); |
| 54 | + }) |
| 55 | + .catch(() => { |
| 56 | + console.error(JSON.stringify(arguments)); |
| 57 | + }); |
61 | 58 | } |
62 | | - callback(object); |
63 | | - }); |
| 59 | + ); |
64 | 60 | } |
65 | 61 |
|
66 | 62 | return { |
|
0 commit comments