optionsModel.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /**
  2. * Created by Zhong on 2017/9/28.
  3. */
  4. import optionsModel from '../models/schemas';
  5. class OptionsDao {
  6. async getOptions(user_id, compilation_id){
  7. let rst = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
  8. rst = rst.length > 0 && typeof rst[0].options !== 'undefined' ? rst[0].options : null;
  9. return rst;
  10. }
  11. async getOptionsByType(user_id, compilation_id, optsType){
  12. let rst = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
  13. if(rst.length > 0){
  14. let opts = rst[0].options;
  15. for(let i = 0, len = opts.length; i < len; i++){
  16. if(opts[i].type === optsType){
  17. return opts[i];
  18. }
  19. }
  20. }
  21. else return null;
  22. }
  23. async saveOptions(user_id, compilation_id, opsType, opts){
  24. let optionsData = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
  25. if(optionsData.length === 0){
  26. await optionsModel.create({user_id: user_id, compilation_id: compilation_id, options: [{type: opsType, opts: opts}]});
  27. }
  28. await optionsModel.update({user_id: user_id, compilation_id: compilation_id, 'options.type': opsType}, {$set: {'options.$.opts': opts}});
  29. let rst = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
  30. return rst;
  31. }
  32. }
  33. export default OptionsDao;