cities.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict';
  2. import mongoose from 'mongoose';
  3. const citySchema = new mongoose.Schema({
  4. id: Number,
  5. name: String,
  6. abbr: String,
  7. area_code: String,
  8. sort: Number,
  9. latitude: Number,
  10. longitude: Number,
  11. is_map: Boolean,
  12. pinyin: String,
  13. });
  14. citySchema.statics.cityGuess = function(name){
  15. return new Promise(async (resolve, reject) => {
  16. const firtWord = name.substr(0,1).toUpperCase();
  17. try{
  18. const city = await this.findOne();
  19. Object.entries(city._doc).forEach(item => {
  20. if(item[0] == firtWord){
  21. item[1].forEach(cityItem => {
  22. if (cityItem.pinyin == name) {
  23. resolve(cityItem)
  24. }
  25. })
  26. }
  27. })
  28. }catch(err){
  29. reject({
  30. name: 'ERROR_DATA',
  31. message: '查找数据失败',
  32. });
  33. console.error(err);
  34. }
  35. })
  36. }
  37. citySchema.statics.cityHot = function (){
  38. return new Promise(async (resolve, reject) => {
  39. try{
  40. const city = await this.findOne();
  41. resolve(city._doc.hotCities)
  42. }catch(err){
  43. reject({
  44. name: 'ERROR_DATA',
  45. message: '查找数据失败',
  46. });
  47. console.error(err);
  48. }
  49. })
  50. }
  51. citySchema.statics.cityGroup = function (){
  52. return new Promise(async (resolve, reject) => {
  53. try{
  54. const city = await this.findOne();
  55. const cityObj = city._doc;
  56. delete(cityObj._id)
  57. delete(cityObj.hotCities)
  58. resolve(cityObj)
  59. }catch(err){
  60. reject({
  61. name: 'ERROR_DATA',
  62. message: '查找数据失败',
  63. });
  64. console.error(err);
  65. }
  66. })
  67. }
  68. citySchema.statics.getCityById = function(id){
  69. return new Promise(async (resolve, reject) => {
  70. try{
  71. const city = await this.findOne();
  72. Object.entries(city._doc).forEach(item => {
  73. if(item[0] !== '_id' && item[0] !== 'hotCities'){
  74. item[1].forEach(cityItem => {
  75. if (cityItem.id == id) {
  76. resolve(cityItem)
  77. }
  78. })
  79. }
  80. })
  81. }catch(err){
  82. reject({
  83. name: 'ERROR_DATA',
  84. message: '查找数据失败',
  85. });
  86. console.error(err);
  87. }
  88. })
  89. }
  90. const Cities = mongoose.model('Cities', citySchema);
  91. export default Cities