我的 MongoDB 数据库中有以下 go 结构:
type Station struct {
ID bson.ObjectId `bson:"_id" json:"id"`
Name string `bson:"name" json:"name"`
Sensors []Sensor `bson:"sensors" json:"sensors"`
}
type Sensor struct {
ID bson.ObjectId `bson:"_id" json:"id"`
Type string ` bson:"type" json:"type"`
Value float64 `bson:"value" json:"value"`
}
当我在端点发出 POST 请求时localhost:3000/stations/<IDofTheStation/sensors,它应该向指定站添加一个新传感器。
目前我有这段代码
func AddSensorToStation(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
params := mux.Vars(r)
station, err := dao.FindById(params["id"])
if err != nil {
respondWithError(w, http.StatusBadRequest, "Invalid Station ID")
return
}
sensor := Sensor{Type: "test"}
station.Sensors = append(station.Sensors, sensor)
if err := dao.Update(station); err != nil {
respondWithError(w, http.StatusInternalServerError, err.Error())
return
}
respondWithJson(w, http.StatusOK, station)
}
问题是它不会为我要添加的新传感器自动生成 ID,因此会抛出错误“ ObjectIDs 必须恰好 12 个字节长(得到 0) ”
将新的 Sensor 实例附加到数据库为传感器生成 id 的 Sensors 数组的最佳方法是什么?
不负相思意
相关分类