1 | var express = require('express');
|
2 | var router = express.Router();
|
3 | var _ = require('lodash');
|
4 | var common = require('./common');
|
5 |
|
6 |
|
7 | router.all('/document/*', common.checkLogin, function (req, res, next){
|
8 | next();
|
9 | });
|
10 |
|
11 |
|
12 | router.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 |
|
17 | if(connection_list[req.params.conn] === undefined){
|
18 | res.status(400).json({'msg': req.i18n.__('Invalid connection name')});
|
19 | }
|
20 |
|
21 |
|
22 | if(req.params.db.indexOf(' ') > -1){
|
23 | res.status(400).json({'msg': req.i18n.__('Invalid database name')});
|
24 | }
|
25 |
|
26 |
|
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 |
|
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 |
|
53 | router.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 |
|
58 | if(connection_list[req.params.conn] === undefined){
|
59 | res.status(400).json({'msg': req.i18n.__('Invalid connection name')});
|
60 | }
|
61 |
|
62 |
|
63 | if(req.params.db.indexOf(' ') > -1){
|
64 | res.status(400).json({'msg': req.i18n.__('Invalid database name')});
|
65 | }
|
66 |
|
67 |
|
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 |
|
94 | router.post('/document/:conn/:db/:coll/doc_delete', function (req, res, next){
|
95 | var connection_list = req.app.locals.dbConnections;
|
96 |
|
97 |
|
98 | if(connection_list[req.params.conn] === undefined){
|
99 | res.status(400).json({'msg': req.i18n.__('Invalid connection name')});
|
100 | }
|
101 |
|
102 |
|
103 | if(req.params.db.indexOf(' ') > -1){
|
104 | res.status(400).json({'msg': req.i18n.__('Invalid database name')});
|
105 | }
|
106 |
|
107 |
|
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 |
|
126 | module.exports = router;
|