mock平台

db.js 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const mongoose = require('mongoose');
  2. const yapi = require('../yapi.js');
  3. const autoIncrement = require('./mongoose-auto-increment');
  4. function model(model, schema) {
  5. if (schema instanceof mongoose.Schema === false) {
  6. schema = new mongoose.Schema(schema);
  7. }
  8. schema.set('autoIndex', false);
  9. return mongoose.model(model, schema, model);
  10. }
  11. function connect(callback) {
  12. mongoose.Promise = global.Promise;
  13. mongoose.set('useNewUrlParser', true);
  14. mongoose.set('useFindAndModify', false);
  15. mongoose.set('useCreateIndex', true);
  16. let config = yapi.WEBCONFIG;
  17. let options = {useNewUrlParser: true, useCreateIndex: true};
  18. if (config.db.user) {
  19. options.user = config.db.user;
  20. options.pass = config.db.pass;
  21. }
  22. options = Object.assign({}, options, config.db.options)
  23. var connectString = '';
  24. if(config.db.connectString){
  25. connectString = config.db.connectString;
  26. }else{
  27. connectString = `mongodb://${config.db.servername}:${config.db.port}/${config.db.DATABASE}`;
  28. if (config.db.authSource) {
  29. connectString = connectString + `?authSource=${config.db.authSource}`;
  30. }
  31. }
  32. let db = mongoose.connect(
  33. connectString,
  34. options,
  35. function(err) {
  36. if (err) {
  37. yapi.commons.log(err + ', mongodb Authentication failed', 'error');
  38. }
  39. }
  40. );
  41. db.then(
  42. function() {
  43. yapi.commons.log('mongodb load success...');
  44. if (typeof callback === 'function') {
  45. callback.call(db);
  46. }
  47. },
  48. function(err) {
  49. yapi.commons.log(err + 'mongodb connect error', 'error');
  50. }
  51. );
  52. autoIncrement.initialize(db);
  53. return db;
  54. }
  55. yapi.db = model;
  56. module.exports = {
  57. model: model,
  58. connect: connect
  59. };