Skip to content

Instantly share code, notes, and snippets.

@ZZR-china
Last active December 2, 2016 11:02
Show Gist options
  • Save ZZR-china/c3a8d257d06a100568143982ff610ea4 to your computer and use it in GitHub Desktop.
Save ZZR-china/c3a8d257d06a100568143982ff610ea4 to your computer and use it in GitHub Desktop.
a mongoose helper func, you can new it with a model. (the args should all be object in es6, like {status, name}, there status, name can be string or number.)
/*
* Author: Magic <magic@foowala.com>
* Module description: mongo func helper
*/
'use strict';
var mongo_funcs = function (mongo_name) {
this.findOne = (data) => {
return new Promise((resolve, reject) => {
mongo_name.findOne(data, (err, result) => {
if (err) {
return reject(err);
}
return resolve(result);
})
})
};
this.save = (data) => {
return new Promise((resolve, reject) => {
const mongo_doc = new mongo_name(data);
mongo_doc.save((err, result) => {
if (err) {
return reject(err);
}
return resolve(result);
})
})
};
this.insert = (data) => {
return new Promise((resolve, reject) => {
this.findOne(data)
.then(result => {
if (result) {
return reject('already has this func')
}else{
return this.save(data)
}
})
.then(result => {
resolve(result)
})
.catch(err => {
console.log(err)
return reject(err);
})
})
},
this.insertFree = (key, data) => {
return new Promise((resolve, reject) => {
this.findOne(key)
.then(result => {
if (result) {
return reject('already has this func')
}else{
return this.save(data)
}
})
.then(result => {
resolve(result)
})
.catch(err => {
console.log(err)
return reject(err);
})
})
},
this.update = (key, data) => {
return new Promise((resolve, reject) => {
mongo_name.update(key, data, (err, result) => {
if (err) {
return reject(err);
}
return resolve(result);
})
})
};
}
module.exports = exports = mongo_funcs;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment