javascript(mongy): First version
Signed-off-by: prescientmoon <git@moonythm.dev>
This commit is contained in:
parent
8febe13e26
commit
6354cc3fe2
4 changed files with 255 additions and 61 deletions
javascript/mongy
64
javascript/mongy/app.js
Normal file
64
javascript/mongy/app.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
const Mongoose = require("mongoose");
|
||||
|
||||
class Mongy{
|
||||
constructor(){
|
||||
this.connected = false;
|
||||
|
||||
this.Schemas = {};
|
||||
this.Models = {};
|
||||
}
|
||||
createModel(name,collection,structure){
|
||||
this.Schemas[name] = new Mongoose.Schema(structure);
|
||||
this.Models[name] = new Mongoose.model(name,this.Schemas[name],collection);
|
||||
}
|
||||
instantiate(name,data){
|
||||
return new this.Models[name](data);
|
||||
}
|
||||
saveModel(model){
|
||||
return new Promise((resolve, reject) => {
|
||||
model.save((err,res) => {
|
||||
if (err) reject(err);
|
||||
|
||||
resolve(res);
|
||||
});
|
||||
});
|
||||
}
|
||||
async connect(url){
|
||||
Mongoose.connect(url,{
|
||||
useNewUrlParser: true
|
||||
});
|
||||
this.db = Mongoose.connection;
|
||||
|
||||
await this.open();
|
||||
|
||||
this.connected = true;
|
||||
}
|
||||
async open(){
|
||||
const {db} = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
db.once('open', function() {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
find(modelName,query){
|
||||
const model = this.Models[modelName];
|
||||
|
||||
return new Promise((resolve,reject) => {
|
||||
model.find(query,(error,result) => {
|
||||
if (error) reject(error);
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
}
|
||||
remove(modelName,query){
|
||||
const model = this.Models[modelName];
|
||||
return new Promise((resolve,reject) => {
|
||||
model.find(query).remove(() => {
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Mongy;
|
Loading…
Add table
Add a link
Reference in a new issue