1. 程式人生 > 實用技巧 >國標GB28181協議視訊融合智慧分析平臺EasyCVR中建立資料庫表結構體表名無效問題排查

國標GB28181協議視訊融合智慧分析平臺EasyCVR中建立資料庫表結構體表名無效問題排查

大家知道EasyCVR作為TSINGSEE青犀視訊研發的多協議融合視訊智慧分析平臺,具備目前市面上很多視訊平臺所不具備的能力,比如支援同時接入GB28181協議、RTSP拉流協議、HIKSDK、Ehome等私有協議,按需靈活擴充套件、收縮資源,免去了外掛安裝、瀏覽器限定等條件,實現了無外掛、多平臺自由觀看回放。

鑑於很多使用者都需要在EasyCVR視訊平臺內增加使用者管理的功能,我們就添加了使用者及角色管理功能的介面,但是在建立資料庫表結構體的時候,通過指定表名tablename方法重寫該資料表,發現前端介面顯示的資料表並沒有生效。

注:結構包含建構函式、常量、欄位、方法、屬性、索引器、運算子、事件和巢狀型別,但如果同時需要上述幾種成員,則應當考慮改為使用類作為型別。結構可以實現介面,但它們無法繼承另一個結構。

原始資料庫程式碼如下:

func (Device) TableName() string {
	return "t_devices"
}
for _, value := range dbDevices {
		if value.DeviceType == "GB" {
			gbsdevices := make([]*models.Device, 0)
			q := db.SQLite.Model(models.Device{})
			q.Where("[index] = ?", value.DeviceID).Find(&gbsdevices)
			if len(gbsdevices) != 1 {
				continue
			}

該程式碼不生效後,我們對程式碼進行了如下修改:

for _, value := range dbDevices {
		if value.DeviceType == "GB" {
			gbsdevices := make([]*models.Device, 0)
			q := db.SQLite.Model(models.Device{})
			q.Table(models.Device{}.TableName()).Where("[index] = ?", value.DeviceID).Find(&gbsdevices)
			if len(gbsdevices) != 1 {
				continue
			}

修改後再次檢視前端,資料表顯示正常:

EasyCVR視訊智慧分析平臺支援阿里雲、騰訊雲、華為雲、七牛雲等,支援S3和Swift介面的物件儲存服務,簡單配置,部署更高效,當然EasyCVR也可以通過GB28181協議與第三方平臺進行級聯,聯動不同網路環境下的多個平臺。

TSINGSEE青犀視訊研發的EasyGBS視訊平臺也支援GB28181協議裝置的接入,如果大家需要了解更多EasyCVR及GB28181協議相關內容,歡迎諮詢,同時TSINGSEE青犀視訊開發的雲邊端架構視訊平臺支援試用,歡迎大家測試!