bonsaif 1.10.40 → 1.10.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/execute.js +39 -0
- package/lib/hookup/mongodb.js +353 -44
- package/lib/hookup/mongoose.js +1102 -0
- package/package.json +13 -1
- package/tests/README.md +245 -0
- package/tests/config.example.js +61 -0
- package/tests/config.js +64 -0
- package/tests/docker-restart.sh +20 -0
- package/tests/docker-start.sh +192 -0
- package/tests/docker-stop.sh +41 -0
- package/tests/run-all-tests.js +76 -0
- package/tests/test-mariadb.js +85 -0
- package/tests/test-mongodb.js +254 -0
- package/tests/test-mongoose.js +408 -0
- package/tests/test-postgres.js +84 -0
- package/tests/test-redis.js +85 -0
package/lib/execute.js
CHANGED
|
@@ -45,6 +45,7 @@ const query = async (o)=>{
|
|
|
45
45
|
switch(o.endpoint.client){
|
|
46
46
|
case 'mariadb': rs = await mariadb(o); break;
|
|
47
47
|
case 'mongodb': rs = await mongodb(o); break;
|
|
48
|
+
case 'mongoose': rs = await mongoose(o); break;
|
|
48
49
|
case 'redis': rs = await redis(o); break;
|
|
49
50
|
case 'api': rs = await api(o); break;
|
|
50
51
|
case 'postgres': rs = await postgres(o); break;
|
|
@@ -127,6 +128,44 @@ const mariadb= async(o)=>{
|
|
|
127
128
|
|
|
128
129
|
/**
|
|
129
130
|
*
|
|
131
|
+
* @param {object} o Configuracion de mongoose
|
|
132
|
+
* @returns
|
|
133
|
+
*/
|
|
134
|
+
const mongoose= async(o)=>{
|
|
135
|
+
const { local=false } = o.endpoint;
|
|
136
|
+
const { db = '', resultFormat=true} = o.options;
|
|
137
|
+
o.options.dml = 'api';
|
|
138
|
+
o.body = o.query;
|
|
139
|
+
|
|
140
|
+
if (local){
|
|
141
|
+
try {
|
|
142
|
+
let mongoose = require("../lib/hookup/mongoose");
|
|
143
|
+
let r = await mongoose.api(o,db,o.body);
|
|
144
|
+
try{ r.query = o.query }catch(e){}
|
|
145
|
+
return resultFormat ? resultSet(r) : r ;
|
|
146
|
+
} catch (e) {
|
|
147
|
+
return {
|
|
148
|
+
result: {
|
|
149
|
+
error: 1,
|
|
150
|
+
code: 503,
|
|
151
|
+
msg: 'Mongoose no disponible: ' + e.message
|
|
152
|
+
},
|
|
153
|
+
data: []
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}else{
|
|
157
|
+
return new Promise((resolve, reject)=>{
|
|
158
|
+
backend(o)
|
|
159
|
+
.then(r=>{
|
|
160
|
+
try{ r.query = o.query }catch(e){}
|
|
161
|
+
resolve(resultFormat ? resultSet(r) : r);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
*
|
|
130
169
|
* @param {object} o Configuracion de redis
|
|
131
170
|
* @returns
|
|
132
171
|
*/
|
package/lib/hookup/mongodb.js
CHANGED
|
@@ -163,34 +163,40 @@ const update=async(options,dbm, col, json_obj, query)=>{
|
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
const upsert=async(options,dbm, col, json_obj, query)=>{
|
|
166
|
+
const exec = require("./exec");
|
|
167
|
+
const mongoclient = exec.mongoConn(options);
|
|
168
|
+
const start = Date.now();
|
|
169
|
+
|
|
166
170
|
return new Promise((resolve, reject)=>{
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
171
|
+
mongoclient.then(
|
|
172
|
+
function(client){
|
|
173
|
+
let db = client.db(dbm);
|
|
174
|
+
db.collection(col).updateOne(query, { $set: json_obj }, { upsert: true }, function(err, res) {
|
|
175
|
+
const end = Date.now();
|
|
176
|
+
const time = end - start;
|
|
177
|
+
let result, upsertedCount=0, modifiedCount=0, upsertedId=null;
|
|
178
|
+
try{
|
|
179
|
+
result = res.result;
|
|
180
|
+
upsertedCount = res.upsertedCount || 0;
|
|
181
|
+
modifiedCount = res.modifiedCount || 0;
|
|
182
|
+
upsertedId = res.upsertedId ? res.upsertedId._id : null;
|
|
183
|
+
} catch(e){ }
|
|
184
|
+
if (err) {
|
|
185
|
+
resolve({result:{dml:"upsert", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
186
|
+
}else{
|
|
187
|
+
let action = upsertedCount > 0 ? 'inserted' : 'updated';
|
|
188
|
+
resolve({result:{dml:"upsert", headers:"upsert", insertId:upsertedId, time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:`1 document ${action}`, result }});
|
|
189
|
+
}
|
|
190
|
+
try{
|
|
191
|
+
exec.mongoClose(mongoclient);
|
|
192
|
+
}catch(e){
|
|
193
|
+
utl.log('err.upsert '+e);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
).catch(err=>{
|
|
198
|
+
resolve({result:{dml:"upsert", headers:"", time:0, code:404, error:1}, results:err});
|
|
199
|
+
});
|
|
194
200
|
})
|
|
195
201
|
}
|
|
196
202
|
|
|
@@ -607,7 +613,8 @@ const api=async(options,dbm, json)=>{
|
|
|
607
613
|
}
|
|
608
614
|
|
|
609
615
|
if (utl.ObjectEmpty(json, 'insert')){
|
|
610
|
-
dml = 'insert';
|
|
616
|
+
dml = 'insert';
|
|
617
|
+
col = json.insert;
|
|
611
618
|
json_api = json.documents?json.documents:[];
|
|
612
619
|
if (json_api.length==1){
|
|
613
620
|
json_api = json.documents[0];
|
|
@@ -617,7 +624,8 @@ const api=async(options,dbm, json)=>{
|
|
|
617
624
|
}
|
|
618
625
|
|
|
619
626
|
if (utl.ObjectEmpty(json, 'update')){
|
|
620
|
-
dml = 'update';
|
|
627
|
+
dml = 'update';
|
|
628
|
+
col = json.update;
|
|
621
629
|
json_api = json.documents?json.documents:[];
|
|
622
630
|
if (json_api.length==1){
|
|
623
631
|
json_api = json.documents[0];
|
|
@@ -627,7 +635,8 @@ const api=async(options,dbm, json)=>{
|
|
|
627
635
|
}
|
|
628
636
|
|
|
629
637
|
if (utl.ObjectEmpty(json, 'updateMany')){
|
|
630
|
-
dml = 'updateMany';
|
|
638
|
+
dml = 'updateMany';
|
|
639
|
+
col = json.updateMany;
|
|
631
640
|
json_api = json.documents?json.documents:[];
|
|
632
641
|
if (json_api.length==1){
|
|
633
642
|
json_api = json.documents[0];
|
|
@@ -636,7 +645,31 @@ const api=async(options,dbm, json)=>{
|
|
|
636
645
|
}
|
|
637
646
|
}
|
|
638
647
|
|
|
639
|
-
|
|
648
|
+
if (utl.ObjectEmpty(json, 'replaceOne')){
|
|
649
|
+
dml = 'replaceOne';
|
|
650
|
+
col = json.replaceOne;
|
|
651
|
+
json_api = json.documents?json.documents:[];
|
|
652
|
+
if (json_api.length==1){
|
|
653
|
+
json_api = json.documents[0];
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
if (utl.ObjectEmpty(json, 'findOneAndUpdate')){
|
|
658
|
+
dml = 'findOneAndUpdate';
|
|
659
|
+
col = json.findOneAndUpdate;
|
|
660
|
+
json_api = json.documents?json.documents:[];
|
|
661
|
+
if (json_api.length==1){
|
|
662
|
+
json_api = json.documents[0];
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
if (utl.ObjectEmpty(json, 'insertMany')){
|
|
667
|
+
dml = 'insertMany';
|
|
668
|
+
col = json.insertMany;
|
|
669
|
+
json_api = json.documents?json.documents:[];
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
let ltdml = ['find','findOne','delete','deleteOne','deleteMany','count','dbs','collections','drop','aggregate','distinct','findOneAndDelete'];
|
|
640
673
|
for (let x of ltdml){
|
|
641
674
|
if (utl.ObjectEmpty(json,x)){
|
|
642
675
|
dml = x; break;
|
|
@@ -644,20 +677,30 @@ const api=async(options,dbm, json)=>{
|
|
|
644
677
|
}
|
|
645
678
|
dml==''? dml='command':'';
|
|
646
679
|
|
|
647
|
-
|
|
680
|
+
if (!col){
|
|
681
|
+
eval(` try{ col = json.${dml}; } catch(e){ } `);
|
|
682
|
+
}
|
|
648
683
|
let r;
|
|
649
684
|
switch (dml){
|
|
650
|
-
case 'insert':
|
|
651
|
-
case '
|
|
652
|
-
case '
|
|
653
|
-
case '
|
|
654
|
-
case '
|
|
655
|
-
case '
|
|
656
|
-
case 'deleteMany':
|
|
657
|
-
case '
|
|
658
|
-
case '
|
|
659
|
-
case '
|
|
660
|
-
|
|
685
|
+
case 'insert': r = await insert(options,dbm,col, json_api); break;
|
|
686
|
+
case 'insertMany': r = await insertMany(options,dbm,col, json_api); break;
|
|
687
|
+
case 'upsert': r = await upsert(options,dbm,col, json_api, query); break;
|
|
688
|
+
case 'update': r = await update(options,dbm,col, json_api, query); break;
|
|
689
|
+
case 'updateMany': r = await updateMany(options,dbm,col, json_api, query); break;
|
|
690
|
+
case 'deleteOne': r = await deleteOne(options,dbm,col, query); break;
|
|
691
|
+
case 'deleteMany': r = await deleteMany(options,dbm,col, json); break;
|
|
692
|
+
case 'count': r = await count(options,dbm,col, json); break;
|
|
693
|
+
case 'dbs': r = await dbs(options); break;
|
|
694
|
+
case 'collections': r = await collections(options,dbm); break;
|
|
695
|
+
case 'drop': r = await drop(options,dbm,col); break;
|
|
696
|
+
case 'find': r = await findMany(options,dbm,col,json); break;
|
|
697
|
+
case 'findOne': r = await findOne(options,dbm,col, query, json.sort); break;
|
|
698
|
+
case 'aggregate': r = await aggregate(options,dbm,col, json.pipeline); break;
|
|
699
|
+
case 'distinct': r = await distinct(options,dbm,col, json.field, query); break;
|
|
700
|
+
case 'findOneAndUpdate': r = await findOneAndUpdate(options,dbm,col, query, json_api, json.returnNew); break;
|
|
701
|
+
case 'findOneAndDelete': r = await findOneAndDelete(options,dbm,col, query); break;
|
|
702
|
+
case 'replaceOne': r = await replaceOne(options,dbm,col, query, json_api); break;
|
|
703
|
+
default: r = await command(options,dbm,json);
|
|
661
704
|
}
|
|
662
705
|
|
|
663
706
|
return new Promise((resolve, reject)=>{
|
|
@@ -665,10 +708,271 @@ const api=async(options,dbm, json)=>{
|
|
|
665
708
|
})
|
|
666
709
|
}
|
|
667
710
|
|
|
711
|
+
const findOne=async(options,dbm, col, query, orderby)=>{
|
|
712
|
+
const exec = require("./exec");
|
|
713
|
+
const mongoclient = exec.mongoConn(options);
|
|
714
|
+
orderby = orderby!=null?orderby:'';
|
|
715
|
+
const start = Date.now();
|
|
716
|
+
|
|
717
|
+
return new Promise((resolve, reject)=>{
|
|
718
|
+
mongoclient.then(
|
|
719
|
+
function(client){
|
|
720
|
+
let db = client.db(dbm);
|
|
721
|
+
db.collection(col).findOne(query, {sort: orderby}, function(err, result) {
|
|
722
|
+
const end = Date.now();
|
|
723
|
+
const time = end - start;
|
|
724
|
+
|
|
725
|
+
if (err) {
|
|
726
|
+
resolve({"result":{"dml":"findOne", "headers":"", "time":utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
727
|
+
}else{
|
|
728
|
+
resolve({"result":{"dml":"findOne", "headers":getFields(result), "time":utl.milisegundosASegundos(time), code:200, error:0}, data:result ? [result] : []});
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
try{
|
|
732
|
+
exec.mongoClose(mongoclient);
|
|
733
|
+
}catch(e){
|
|
734
|
+
utl.log('err.findOne '+e);
|
|
735
|
+
}
|
|
736
|
+
});
|
|
737
|
+
}
|
|
738
|
+
).catch(err=>{
|
|
739
|
+
resolve({"result":{"dml":"findOne", "headers":"", time:0, code:404, error:1}, "results":err});
|
|
740
|
+
});
|
|
741
|
+
})
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
const deleteOne=async(options,dbm, col, query)=>{
|
|
745
|
+
const exec = require("./exec");
|
|
746
|
+
const mongoclient = exec.mongoConn(options);
|
|
747
|
+
const start = Date.now();
|
|
748
|
+
|
|
749
|
+
return new Promise((resolve, reject)=>{
|
|
750
|
+
mongoclient.then(
|
|
751
|
+
function(client){
|
|
752
|
+
let db = client.db(dbm);
|
|
753
|
+
db.collection(col).deleteOne(query, function(err, res) {
|
|
754
|
+
const end = Date.now();
|
|
755
|
+
const time = end - start;
|
|
756
|
+
let result, deletedCount=0;
|
|
757
|
+
try{ result = res.result; deletedCount = res.result.n; } catch(e){ }
|
|
758
|
+
if (err) {
|
|
759
|
+
resolve({result:{dml:"deleteOne", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
760
|
+
}else{
|
|
761
|
+
resolve({result:{dml:"deleteOne", headers:"deletedCount", time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:`${deletedCount} document deleted`, result }});
|
|
762
|
+
}
|
|
763
|
+
try{
|
|
764
|
+
exec.mongoClose(mongoclient);
|
|
765
|
+
}catch(e){
|
|
766
|
+
utl.log('err.deleteOne '+e);
|
|
767
|
+
}
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
).catch(err=>{
|
|
771
|
+
resolve({result:{dml:"deleteOne", headers:"", time:0, code:404, error:1}, results:err});
|
|
772
|
+
});
|
|
773
|
+
})
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
const insertMany=async(options,dbm, col, documents)=>{
|
|
777
|
+
const exec = require("./exec");
|
|
778
|
+
const mongoclient = exec.mongoConn(options);
|
|
779
|
+
const start = Date.now();
|
|
780
|
+
|
|
781
|
+
return new Promise((resolve, reject)=>{
|
|
782
|
+
mongoclient.then(
|
|
783
|
+
function(client){
|
|
784
|
+
let db = client.db(dbm);
|
|
785
|
+
db.collection(col).insertMany(documents, function(err, res) {
|
|
786
|
+
const end = Date.now();
|
|
787
|
+
const time = end - start;
|
|
788
|
+
if (err) {
|
|
789
|
+
resolve({result:{dml:"insertMany", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
790
|
+
}else{
|
|
791
|
+
let ops=res.ops!=null?res.ops:{};
|
|
792
|
+
resolve({result:{dml:"insertMany", headers:"insertedCount", insertedCount:res.insertedCount, time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:`${res.insertedCount} documents inserted`, ops}});
|
|
793
|
+
}
|
|
794
|
+
try{
|
|
795
|
+
exec.mongoClose(mongoclient);
|
|
796
|
+
}catch(e){
|
|
797
|
+
utl.log('err.insertMany '+e);
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
}
|
|
801
|
+
).catch(err=>{
|
|
802
|
+
resolve({"result":{"dml":"insertMany", "headers":"", time:0, code:404, error:1}, results:err});
|
|
803
|
+
});
|
|
804
|
+
})
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
const aggregate=async(options,dbm, col, pipeline)=>{
|
|
808
|
+
const exec = require("./exec");
|
|
809
|
+
const mongoclient = exec.mongoConn(options);
|
|
810
|
+
const start = Date.now();
|
|
811
|
+
|
|
812
|
+
return new Promise((resolve, reject)=>{
|
|
813
|
+
mongoclient.then(
|
|
814
|
+
function(client){
|
|
815
|
+
let db = client.db(dbm);
|
|
816
|
+
db.collection(col).aggregate(pipeline).toArray(function(err, result) {
|
|
817
|
+
const end = Date.now();
|
|
818
|
+
const time = end - start;
|
|
819
|
+
|
|
820
|
+
if (err) {
|
|
821
|
+
resolve({"result":{"dml":"aggregate", "headers":"", "time":utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
822
|
+
}else{
|
|
823
|
+
resolve({"result":{"dml":"aggregate", "headers":getFields(result[0]), "time":utl.milisegundosASegundos(time), code:200, error:0}, data:result});
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
try{
|
|
827
|
+
exec.mongoClose(mongoclient);
|
|
828
|
+
}catch(e){
|
|
829
|
+
utl.log('err.aggregate '+e);
|
|
830
|
+
}
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
).catch(err=>{
|
|
834
|
+
resolve({"result":{"dml":"aggregate", "headers":"", time:0, code:404, error:1}, "results":err});
|
|
835
|
+
});
|
|
836
|
+
})
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
const distinct=async(options,dbm, col, field, query={})=>{
|
|
840
|
+
const exec = require("./exec");
|
|
841
|
+
const mongoclient = exec.mongoConn(options);
|
|
842
|
+
const start = Date.now();
|
|
843
|
+
|
|
844
|
+
return new Promise((resolve, reject)=>{
|
|
845
|
+
mongoclient.then(
|
|
846
|
+
function(client){
|
|
847
|
+
let db = client.db(dbm);
|
|
848
|
+
db.collection(col).distinct(field, query, function(err, result) {
|
|
849
|
+
const end = Date.now();
|
|
850
|
+
const time = end - start;
|
|
851
|
+
|
|
852
|
+
if (err) {
|
|
853
|
+
resolve({"result":{"dml":"distinct", "headers":"", "time":utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
854
|
+
}else{
|
|
855
|
+
resolve({"result":{"dml":"distinct", "headers":field, "time":utl.milisegundosASegundos(time), code:200, error:0}, data:result});
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
try{
|
|
859
|
+
exec.mongoClose(mongoclient);
|
|
860
|
+
}catch(e){
|
|
861
|
+
utl.log('err.distinct '+e);
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
}
|
|
865
|
+
).catch(err=>{
|
|
866
|
+
resolve({"result":{"dml":"distinct", "headers":"", time:0, code:404, error:1}, "results":err});
|
|
867
|
+
});
|
|
868
|
+
})
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
const findOneAndUpdate=async(options,dbm, col, query, json_obj, returnNew=true)=>{
|
|
872
|
+
const exec = require("./exec");
|
|
873
|
+
const mongoclient = exec.mongoConn(options);
|
|
874
|
+
const start = Date.now();
|
|
875
|
+
|
|
876
|
+
return new Promise((resolve, reject)=>{
|
|
877
|
+
mongoclient.then(
|
|
878
|
+
function(client){
|
|
879
|
+
let db = client.db(dbm);
|
|
880
|
+
db.collection(col).findOneAndUpdate(query, { $set: json_obj }, { returnDocument: returnNew ? 'after' : 'before' }, function(err, res) {
|
|
881
|
+
const end = Date.now();
|
|
882
|
+
const time = end - start;
|
|
883
|
+
let result;
|
|
884
|
+
try{ result = res.value; } catch(e){ }
|
|
885
|
+
if (err) {
|
|
886
|
+
resolve({result:{dml:"findOneAndUpdate", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
887
|
+
}else{
|
|
888
|
+
resolve({result:{dml:"findOneAndUpdate", headers:getFields(result), time:utl.milisegundosASegundos(time), code:200, error:0}, data:result ? [result] : [], results:{ok: res.ok, lastErrorObject: res.lastErrorObject}});
|
|
889
|
+
}
|
|
890
|
+
try{
|
|
891
|
+
exec.mongoClose(mongoclient);
|
|
892
|
+
}catch(e){
|
|
893
|
+
utl.log('err.findOneAndUpdate '+e);
|
|
894
|
+
}
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
).catch(err=>{
|
|
898
|
+
resolve({result:{dml:"findOneAndUpdate", headers:"", time:0, code:404, error:1}, results:err});
|
|
899
|
+
});
|
|
900
|
+
})
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
const findOneAndDelete=async(options,dbm, col, query)=>{
|
|
904
|
+
const exec = require("./exec");
|
|
905
|
+
const mongoclient = exec.mongoConn(options);
|
|
906
|
+
const start = Date.now();
|
|
907
|
+
|
|
908
|
+
return new Promise((resolve, reject)=>{
|
|
909
|
+
mongoclient.then(
|
|
910
|
+
function(client){
|
|
911
|
+
let db = client.db(dbm);
|
|
912
|
+
db.collection(col).findOneAndDelete(query, function(err, res) {
|
|
913
|
+
const end = Date.now();
|
|
914
|
+
const time = end - start;
|
|
915
|
+
let result;
|
|
916
|
+
try{ result = res.value; } catch(e){ }
|
|
917
|
+
if (err) {
|
|
918
|
+
resolve({result:{dml:"findOneAndDelete", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
919
|
+
}else{
|
|
920
|
+
resolve({result:{dml:"findOneAndDelete", headers:getFields(result), time:utl.milisegundosASegundos(time), code:200, error:0}, data:result ? [result] : [], results:{ok: res.ok, lastErrorObject: res.lastErrorObject}});
|
|
921
|
+
}
|
|
922
|
+
try{
|
|
923
|
+
exec.mongoClose(mongoclient);
|
|
924
|
+
}catch(e){
|
|
925
|
+
utl.log('err.findOneAndDelete '+e);
|
|
926
|
+
}
|
|
927
|
+
});
|
|
928
|
+
}
|
|
929
|
+
).catch(err=>{
|
|
930
|
+
resolve({result:{dml:"findOneAndDelete", headers:"", time:0, code:404, error:1}, results:err});
|
|
931
|
+
});
|
|
932
|
+
})
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
const replaceOne=async(options,dbm, col, query, json_obj)=>{
|
|
936
|
+
const exec = require("./exec");
|
|
937
|
+
const mongoclient = exec.mongoConn(options);
|
|
938
|
+
const start = Date.now();
|
|
939
|
+
|
|
940
|
+
return new Promise((resolve, reject)=>{
|
|
941
|
+
mongoclient.then(
|
|
942
|
+
function(client){
|
|
943
|
+
let db = client.db(dbm);
|
|
944
|
+
db.collection(col).replaceOne(query, json_obj, function(err, res) {
|
|
945
|
+
const end = Date.now();
|
|
946
|
+
const time = end - start;
|
|
947
|
+
let result, modifiedCount=0;
|
|
948
|
+
try{ result = res.result; modifiedCount = res.result.nModified; } catch(e){ }
|
|
949
|
+
if (err) {
|
|
950
|
+
resolve({result:{dml:"replaceOne", headers:"", time:utl.milisegundosASegundos(time), code:204, error:1, msg:err}, results:err});
|
|
951
|
+
}else{
|
|
952
|
+
resolve({result:{dml:"replaceOne", headers:"replaceOne", time:utl.milisegundosASegundos(time), code:200, error:0}, results:{WriteResult:`${modifiedCount} document replaced`, result }});
|
|
953
|
+
}
|
|
954
|
+
try{
|
|
955
|
+
exec.mongoClose(mongoclient);
|
|
956
|
+
}catch(e){
|
|
957
|
+
utl.log('err.replaceOne '+e);
|
|
958
|
+
}
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
).catch(err=>{
|
|
962
|
+
resolve({result:{dml:"replaceOne", headers:"", time:0, code:404, error:1}, results:err});
|
|
963
|
+
});
|
|
964
|
+
})
|
|
965
|
+
}
|
|
966
|
+
|
|
668
967
|
module.exports ={
|
|
669
968
|
find,
|
|
969
|
+
findOne,
|
|
670
970
|
insert,
|
|
971
|
+
insertMany,
|
|
671
972
|
update,
|
|
973
|
+
updateMany,
|
|
974
|
+
deleteMany,
|
|
975
|
+
deleteOne,
|
|
672
976
|
count,
|
|
673
977
|
dbs,
|
|
674
978
|
collections,
|
|
@@ -678,5 +982,10 @@ module.exports ={
|
|
|
678
982
|
command,
|
|
679
983
|
api,
|
|
680
984
|
drop,
|
|
681
|
-
findMany
|
|
985
|
+
findMany,
|
|
986
|
+
aggregate,
|
|
987
|
+
distinct,
|
|
988
|
+
findOneAndUpdate,
|
|
989
|
+
findOneAndDelete,
|
|
990
|
+
replaceOne
|
|
682
991
|
}
|