mongoose_helper.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * mongodb Helper
  3. *
  4. * @author caiaolin
  5. * @date 2017/5/22.
  6. */
  7. class MongooseHelper {
  8. /**
  9. * mongoose数据模型
  10. *
  11. * @var {object}
  12. */
  13. model = null;
  14. /**
  15. * 查找单一数据
  16. *
  17. * @param {object} conditions
  18. * @param {object} fields
  19. * @return {Promise}
  20. */
  21. findOne(conditions, fields = null) {
  22. let self = this;
  23. return new Promise(function (resolve, reject) {
  24. self.model.findOne(conditions, fields, function (error, data) {
  25. if (error) {
  26. reject(null);
  27. } else {
  28. resolve(data);
  29. }
  30. });
  31. });
  32. }
  33. /**
  34. * 查找数据
  35. *
  36. * @param {object} conditions
  37. * @param {object} fields
  38. * @return {Promise}
  39. */
  40. find(conditions, fields = null) {
  41. let self = this;
  42. return new Promise(function (resolve, reject) {
  43. self.model.find(conditions, fields, function (error, data) {
  44. if (error) {
  45. reject(error);
  46. } else {
  47. resolve(data);
  48. }
  49. });
  50. });
  51. }
  52. /**
  53. * 查找且更新(原子操作)
  54. *
  55. * @param {object} update
  56. * @param {object} condition
  57. * @param {object} options
  58. * @return {Promise}
  59. */
  60. findAndModify(condition, update, options) {
  61. let self = this;
  62. return new Promise(function (resolve, reject) {
  63. self.model.findOneAndUpdate(condition, update, options, function(error, data) {
  64. if (error) {
  65. reject(null);
  66. } else {
  67. resolve(data);
  68. }
  69. });
  70. });
  71. }
  72. /**
  73. * 新增操作
  74. *
  75. * @param {object} data
  76. * @return {Promise}
  77. */
  78. create(data) {
  79. let self = this;
  80. return new Promise(function (resolve, reject) {
  81. self.model.create(data, function(error, data) {
  82. if (error) {
  83. reject(error);
  84. } else {
  85. resolve(data);
  86. }
  87. });
  88. });
  89. }
  90. /**
  91. * 更新操作
  92. *
  93. * @param {object} condition
  94. * @param {object} updateData
  95. * @return {Promise}
  96. */
  97. update(condition, updateData) {
  98. let self = this;
  99. return new Promise(function (resolve, reject) {
  100. let validate = new self.model(updateData);
  101. let validateError = validate.validateSync();
  102. if (validateError) {
  103. reject(validateError);
  104. }
  105. self.model.update(condition, {$set: updateData}, function(error, result) {
  106. if (error) {
  107. reject(error);
  108. } else {
  109. resolve(result);
  110. }
  111. });
  112. });
  113. }
  114. }
  115. module.exports = MongooseHelper;