util.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package elastic
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "runtime"
  7. "strings"
  8. )
  9. //obj(string,M)转M,查询用到
  10. func objToMap(obj interface{}) *map[string]interface{} {
  11. data := make(map[string]interface{})
  12. if s, ok := obj.(string); ok {
  13. json.Unmarshal([]byte(strings.Replace(s, "'", "\"", -1)), &data)
  14. } else if s1, ok1 := obj.(map[string]interface{}); ok1 {
  15. data = s1
  16. } else if s1, ok1 := obj.(*map[string]interface{}); ok1 {
  17. return s1
  18. } else {
  19. data = nil
  20. }
  21. return &data
  22. }
  23. //对象数组转成string数组
  24. func objArrToStringArr(old []interface{}) []string {
  25. if old != nil {
  26. new := make([]string, len(old))
  27. for i, v := range old {
  28. new[i], _ = v.(string)
  29. }
  30. return new
  31. } else {
  32. return nil
  33. }
  34. }
  35. //出错拦截
  36. func catch() {
  37. if r := recover(); r != nil {
  38. log.Println(r)
  39. for skip := 0; ; skip++ {
  40. _, file, line, ok := runtime.Caller(skip)
  41. if !ok {
  42. break
  43. }
  44. go log.Printf("%v,%v\n", file, line)
  45. }
  46. }
  47. }
  48. func bsonIdToSId(_id interface{}) string {
  49. v := fmt.Sprintf("%v", _id)
  50. v = strings.TrimPrefix(v, `ObjectID("`)
  51. v = strings.TrimSuffix(v, `")`)
  52. return v
  53. }