Beego框架 get请求编写


根据业务需求,就是需要查询两表的数据,我用了一个笨方法。直接上代码

代码

controllers

// GetAll ...
// @Title Get All
// @Description get TestData
// @Param	query	query	string	false	"Filter. e.g. col1:v1,col2:v2 ..."
// @Param	fields	query	string	false	"Fields returned. e.g. col1,col2 ..."
// @Param	sortby	query	string	false	"Sorted-by fields. e.g. col1,col2 ..."
// @Param	order	query	string	false	"Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ..."
// @Param	limit	query	string	false	"Limit the size of result set. Must be an integer"
// @Param	offset	query	string	false	"Start position of result set. Must be an integer"
// @Success 200 {object} models.TestData
// @Failure 403
// @router / [get]
func (c *TestDeviceDataController) GetAll() {
	//TestDevice variable
	var imei string
	var producer string
	var productName string
	// var productTime  time.Time
	var testResult string
	// var testTime     time.Time
	var tester string
	var testerJobnum string

	//TestData variable
	var testData string
	var testItem string
	var deviceId int

	var limit int = 10
	var offset int = 0

	if v, err := c.GetInt("pageSize"); err == nil {
		limit = v
	}
	if v, err := c.GetInt("current"); err == nil {
		offset = (v - 1) * limit
	}
	if v := c.GetString("imei"); v != "" {
		imei = v
	}
	if v := c.GetString("producer"); v != "" {
		producer = v
	}
	if v := c.GetString("productName"); v != "" {
		productName = v
	}
	// if v := c.GetString("productTime"); v != "" {
	// 	productTime = v
	// }
	if v := c.GetString("testResult"); v != "" {
		testResult = v
	}
	// if v := c.GetString("testTime"); v != "" {
	// 	testTime = v
	// }
	if v := c.GetString("tester"); v != "" {
		tester = v
	}
	if v := c.GetString("testerJobnum"); v != "" {
		testerJobnum = v
	}
	if v := c.GetString("testData"); v != "" {
		testData = v
	}
	if v := c.GetString("testItem"); v != "" {
		testItem = v
	}
	if v, err := c.GetInt("deviceId"); err == nil {
		deviceId = v
	}
	l, total := models.GetAllTestDeviceData(limit, offset, imei, producer, productName, testResult, tester, testerJobnum, testData, testItem, deviceId)

	c.SuccessData(ListData{Data: l, Total: total})
}

models

func GetAllTestDeviceData(limit int, offset int, imei string, producer string, productName string, testResult string,
	tester string, testerJobnum string, testData string, testItem string, deviceId int) (data []TestDevice, total int64) {
	var testDeviceData []TestDevice
	var ctestData []*TestData
	o := orm.NewOrm()

	qs := o.QueryTable(new(TestDevice).TableName())
	qd := o.QueryTable(new(TestData).TableName())
	if imei != "" {
		qs = qs.Filter("imei", imei)
	}
	if producer != "" {
		qs = qs.Filter("producer", producer)
	}
	if productName != "" {
		qs = qs.Filter("productName", productName)
	}
	if testResult != "" {
		qs = qs.Filter("testResult", testResult)
	}
	if tester != "" {
		qs = qs.Filter("tester", tester)
	}
	if testerJobnum != "" {
		qs = qs.Filter("testerJobnum", testerJobnum)
	}
	if testData != "" {
		qd = qd.Filter("testData", testData)
	}
	if testItem != "" {
		qd = qd.Filter("testItem", testItem)
	}
	// if deviceId >= 0 {
	// 	qs = qs.Filter("deviceId", deviceId)
	// }
	total, _ = qs.Count()

	qs.Limit(limit).Offset(offset).OrderBy("-id").All(&testDeviceData)

	for k, v := range testDeviceData {
		qd.Filter("test_device_id", v.Id).All(&ctestData)
		// v.DevGetJsonData = ctestData
		testDeviceData[k].DevGetJsonData = ctestData
		fmt.Println(v)
	}

	return testDeviceData, total
}

在这里插入图片描述

查询结果

{
  "code": 0,
  "msg": "success",
  "data": {
    "data": [
      {
        "Id": 6,
        "dev_imei": "222222222264456",
        "dev_producer": "Manufacturer Name",
        "dev_producer_name": "smart_city_cover",
        "dev_producer_time": "2022-03-05T00:00:00+08:00",
        "dev_test_result": "ko",
        "dev_test_time": "2022-03-09T08:41:45+08:00",
        "dev_tester": "fgh",
        "dev_tester_jobnum": "fds",
        "data": [
          {
            "Id": 61,
            "devdata_test_data": "ui,",
            "devdata_test_item": "rteg",
            "devdata_test_device_id": 6,
            "data": null
          },
          {
            "Id": 62,
            "devdata_test_data": "bffgsdf",
            "devdata_test_item": "qweqrtew",
            "devdata_test_device_id": 6,
            "data": null
          }
        ]
      },
      {
        "Id": 5,
        "dev_imei": "222222222264453",
        "dev_producer": "Manufacturer Name",
        "dev_producer_name": "smart_city_cover",
        "dev_producer_time": "2022-03-05T00:00:00+08:00",
        "dev_test_result": "bfghn",
        "dev_test_time": "2022-03-07T09:11:18+08:00",
        "dev_tester": "fgh",
        "dev_tester_jobnum": "fds",
        "data": [
          {
            "Id": 49,
            "devdata_test_data": "kk,",
            "devdata_test_item": "rteg",
            "devdata_test_device_id": 5,
            "data": null
          },
          {
            "Id": 50,
            "devdata_test_data": "bffgsdf",
            "devdata_test_item": "qweqrtew",
            "devdata_test_device_id": 5,
            "data": null
          }
        ]
      },
      {
        "Id": 4,
        "dev_imei": "222222222266442",
        "dev_producer": "Manufacturer Name",
        "dev_producer_name": "smart_city_cover",
        "dev_producer_time": "2022-03-05T00:00:00+08:00",
        "dev_test_result": "bfghn",
        "dev_test_time": "2022-03-07T09:11:18+08:00",
        "dev_tester": "fgh",
        "dev_tester_jobnum": "fds",
        "data": [
          {
            "Id": 33,
            "devdata_test_data": "kk,",
            "devdata_test_item": "rteg",
            "devdata_test_device_id": 4,
            "data": null
          },
          {
            "Id": 34,
            "devdata_test_data": "bffgsdf",
            "devdata_test_item": "qweqrtew",
            "devdata_test_device_id": 4,
            "data": null
          }
        ]
      },
      {
        "Id": 3,
        "dev_imei": "222222222266441",
        "dev_producer": "Manufacturer Name",
        "dev_producer_name": "smart_city_cover",
        "dev_producer_time": "2022-03-05T00:00:00+08:00",
        "dev_test_result": "bfghn",
        "dev_test_time": "2022-03-07T09:11:18+08:00",
        "dev_tester": "fgh",
        "dev_tester_jobnum": "fds",
        "data": [
          {
            "Id": 31,
            "devdata_test_data": "kk,",
            "devdata_test_item": "rteg",
            "devdata_test_device_id": 3,
            "data": null
          },
          {
            "Id": 32,
            "devdata_test_data": "bffgsdf",
            "devdata_test_item": "qweqrtew",
            "devdata_test_device_id": 3,
            "data": null
          }
        ]
      }
    ],
    "total": 4
  }
}

限制页码查询

current 代表页数
pageSize 代表每页显示几个
http://localhost:8080/v1/testDeviceData?pageSize=2&current=1
在这里插入图片描述

{
  "code": 0,
  "msg": "success",
  "data": {
    "data": [
      {
        "Id": 6,
        "dev_imei": "222222222264456",
        "dev_producer": "Manufacturer Name",
        "dev_producer_name": "smart_city_cover",
        "dev_producer_time": "2022-03-05T00:00:00+08:00",
        "dev_test_result": "ko",
        "dev_test_time": "2022-03-09T08:41:45+08:00",
        "dev_tester": "fgh",
        "dev_tester_jobnum": "fds",
        "data": [
          {
            "Id": 61,
            "devdata_test_data": "ui,",
            "devdata_test_item": "rteg",
            "devdata_test_device_id": 6,
            "data": null
          },
          {
            "Id": 62,
            "devdata_test_data": "bffgsdf",
            "devdata_test_item": "qweqrtew",
            "devdata_test_device_id": 6,
            "data": null
          }
        ]
      },
      {
        "Id": 5,
        "dev_imei": "222222222264453",
        "dev_producer": "Manufacturer Name",
        "dev_producer_name": "smart_city_cover",
        "dev_producer_time": "2022-03-05T00:00:00+08:00",
        "dev_test_result": "bfghn",
        "dev_test_time": "2022-03-07T09:11:18+08:00",
        "dev_tester": "fgh",
        "dev_tester_jobnum": "fds",
        "data": [
          {
            "Id": 49,
            "devdata_test_data": "kk,",
            "devdata_test_item": "rteg",
            "devdata_test_device_id": 5,
            "data": null
          },
          {
            "Id": 50,
            "devdata_test_data": "bffgsdf",
            "devdata_test_item": "qweqrtew",
            "devdata_test_device_id": 5,
            "data": null
          }
        ]
      }
    ],
    "total": 4
  }
}

m2m

后面同事跟我说有个多对多模型定义,我摸了半天没摸懂,看了go - 在beego orm中插入具有m2m的模型文章仿写了下

点击进入手册,看多对多关系

开始我一直折腾模型定义的rel_table和rel_through,以及参考文章后面发现没有调用m2m,我也不知道啥问题
在这里插入图片描述
在这里插入图片描述

func M2mTest() {
	o := orm.NewOrm()
	var data TestData
	data.DataTestData = "CoolDude"
	id, err := o.Insert(&data)
	if err != nil {
		log.Printf(err.Error())
	} else {
		log.Printf("Player ID: %v", id)
	}

	var device TestDevice
	id, err = o.Insert(&device)
	if err != nil {
		log.Printf(err.Error())
	} else {
		log.Printf("Game ID: %v", id)
	}

	m2m := o.QueryM2M(&device, "DevGetJsonData")
	num, err := m2m.Add(data)
	fmt.Println(m2m.Add(data))
	if err == nil {
		log.Printf("Added nums: %v", num)
	}
	// m2m.Remove(63)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小阿大:)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值