mongoose_helper.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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. connect = null;
  14. /**
  15. * mongoose数据模型
  16. *
  17. * @var {object}
  18. */
  19. model = null;
  20. /**
  21. * 查找单一数据
  22. *
  23. * @param {object} conditions
  24. * @param {object} fields
  25. * @return {Promise}
  26. */
  27. findOne(conditions, fields = null) {
  28. let self = this;
  29. return new Promise(function (resolve, reject) {
  30. self.model.findOne(conditions, fields, function (error, data) {
  31. if (error) {
  32. reject(null);
  33. } else {
  34. resolve(data);
  35. }
  36. });
  37. });
  38. }
  39. /**
  40. * 查找数据
  41. *
  42. * @param {object} conditions
  43. * @param {object} fields
  44. * @return {Promise}
  45. */
  46. find(conditions, fields = null) {
  47. let self = this;
  48. return new Promise(function (resolve, reject) {
  49. self.model.find(conditions, fields, function (error, data) {
  50. if (error) {
  51. reject(error);
  52. } else {
  53. resolve(data);
  54. }
  55. });
  56. });
  57. }
  58. /**
  59. * 关联查找数据
  60. *
  61. * @param {object} conditions
  62. * @param {object} fields
  63. * @param {String|Object} populate
  64. * @return {Promise}
  65. */
  66. findWithPopulate(conditions, fields = null, populate = '') {
  67. let self = this;
  68. return new Promise(function (resolve, reject) {
  69. self.model.find(conditions, fields).populate(populate).exec(function(error, data) {
  70. if (error) {
  71. reject(error);
  72. } else {
  73. resolve(data);
  74. }
  75. });
  76. });
  77. }
  78. /**
  79. * 查找且更新(原子操作)
  80. *
  81. * @param {object} update
  82. * @param {object} condition
  83. * @param {object} options
  84. * @return {Promise}
  85. */
  86. findAndModify(condition, update, options) {
  87. let self = this;
  88. return new Promise(function (resolve, reject) {
  89. self.model.findOneAndUpdate(condition, update, options, function(error, data) {
  90. if (error) {
  91. reject(error);
  92. } else {
  93. resolve(data);
  94. }
  95. });
  96. });
  97. }
  98. /**
  99. * 新增操作
  100. *
  101. * @param {object} data
  102. * @return {Promise}
  103. */
  104. create(data) {
  105. let self = this;
  106. return new Promise(function (resolve, reject) {
  107. self.model.create(data, function(error, data) {
  108. if (error) {
  109. reject(error);
  110. } else {
  111. resolve(data);
  112. }
  113. });
  114. });
  115. }
  116. /**
  117. * 统计数据数量
  118. *
  119. * @param {Object} condition
  120. * @return {Promise}
  121. */
  122. count(condition) {
  123. let self = this;
  124. return new Promise(function(resolve, reject) {
  125. self.model.count(condition, function(error, data) {
  126. if (error) {
  127. reject(error);
  128. } else {
  129. resolve(data);
  130. }
  131. });
  132. });
  133. }
  134. /**
  135. * 删除数据
  136. *
  137. * @param {Object} condition
  138. * @return {Promise}
  139. */
  140. delete(condition) {
  141. let self = this;
  142. return new Promise(function(resolve, reject) {
  143. self.model.remove(condition, function(error, data) {
  144. if (error) {
  145. reject(error);
  146. } else {
  147. resolve(data);
  148. }
  149. });
  150. });
  151. }
  152. }
  153. export default MongooseHelper;