UNPKG

4.73 kBJavaScriptView Raw
1var express = require('express');
2var router = express.Router();
3var _ = require('lodash');
4var common = require('./common');
5
6// runs on all routes and checks password if one is setup
7router.all('/document/*', common.checkLogin, function (req, res, next){
8 next();
9});
10
11// Inserts a new document
12router.post('/document/:conn/:db/:coll/insert_doc', function (req, res, next){
13 var connection_list = req.app.locals.dbConnections;
14 var ejson = require('mongodb-extended-json');
15
16 // Check for existance of connection
17 if(connection_list[req.params.conn] === undefined){
18 res.status(400).json({'msg': req.i18n.__('Invalid connection name')});
19 }
20
21 // Validate database name
22 if(req.params.db.indexOf(' ') > -1){
23 res.status(400).json({'msg': req.i18n.__('Invalid database name')});
24 }
25
26 // Get DB form pool
27 var mongo_db = connection_list[req.params.conn].native.db(req.params.db);
28
29 try{
30 var eJsonData = ejson.parse(req.body.objectData);
31 }catch(e){
32 console.error('Syntax error: ' + e);
33 res.status(400).json({'msg': req.i18n.__('Syntax error. Please check the syntax')});
34 return;
35 }
36
37 // adding a new doc
38 mongo_db.collection(req.params.coll).save(eJsonData, function (err, docs){
39 if(err){
40 console.error('Error inserting document', err);
41 res.status(400).json({'msg': req.i18n.__('Error inserting document') + ': ' + err});
42 }else{
43 var dataReturn = '';
44 if(docs.ops){
45 dataReturn = docs.ops[0]._id;
46 }
47 res.status(200).json({'msg': req.i18n.__('Document successfully added'), 'doc_id': dataReturn});
48 }
49 });
50});
51
52// Edits/updates an existing document
53router.post('/document/:conn/:db/:coll/edit_doc', function (req, res, next){
54 var connection_list = req.app.locals.dbConnections;
55 var ejson = require('mongodb-extended-json');
56
57 // Check for existance of connection
58 if(connection_list[req.params.conn] === undefined){
59 res.status(400).json({'msg': req.i18n.__('Invalid connection name')});
60 }
61
62 // Validate database name
63 if(req.params.db.indexOf(' ') > -1){
64 res.status(400).json({'msg': req.i18n.__('Invalid database name')});
65 }
66
67 // Get DB's form pool
68 var mongo_db = connection_list[req.params.conn].native.db(req.params.db);
69
70 try{
71 var eJsonData = ejson.parse(req.body.objectData);
72 }catch(e){
73 console.error('Syntax error: ' + e);
74 res.status(400).json({'msg': req.i18n.__('Syntax error. Please check the syntax')});
75 return;
76 }
77
78 mongo_db.collection(req.params.coll).save(eJsonData, function (err, doc, lastErrorObject){
79 if(err){
80 console.error('Error updating document: ' + err);
81 res.status(400).json({'msg': req.i18n.__('Error updating document') + ': ' + err});
82 }else{
83 if(doc['nModified'] === 0){
84 console.error('Error updating document: Document ID is incorrect');
85 res.status(400).json({'msg': req.i18n.__('Error updating document: Syntax error')});
86 }else{
87 res.status(200).json({'msg': req.i18n.__('Document successfully updated')});
88 }
89 }
90 });
91});
92
93// Deletes a document
94router.post('/document/:conn/:db/:coll/doc_delete', function (req, res, next){
95 var connection_list = req.app.locals.dbConnections;
96
97 // Check for existance of connection
98 if(connection_list[req.params.conn] === undefined){
99 res.status(400).json({'msg': req.i18n.__('Invalid connection name')});
100 }
101
102 // Validate database name
103 if(req.params.db.indexOf(' ') > -1){
104 res.status(400).json({'msg': req.i18n.__('Invalid database name')});
105 }
106
107 // Get DB's form pool
108 var mongo_db = connection_list[req.params.conn].native.db(req.params.db);
109 common.get_id_type(mongo_db, req.params.coll, req.body.doc_id, function (err, result){
110 if(result.doc){
111 mongo_db.collection(req.params.coll).remove({_id: result.doc_id_type}, true, function (err, docs){
112 if(err || docs.result.n === 0){
113 console.error('Error deleting document: ' + err);
114 res.status(400).json({'msg': req.i18n.__('Error deleting document') + ': ' + req.i18n.__('Cannot find document by Id')});
115 }else{
116 res.status(200).json({'msg': req.i18n.__('Document successfully deleted')});
117 }
118 });
119 }else{
120 console.error('Error deleting document: ' + err);
121 res.status(400).json({'msg': req.i18n.__('Cannot find document by Id')});
122 }
123 });
124});
125
126module.exports = router;