В моей базе данных 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)
}
Проблема в том, что он не генерирует автоматически идентификатор для нового датчика, который я хочу добавить, поэтому он выдает ошибку " ObjectIDs должен бытьдлина ровно 12 байтов (получено 0)"
Каков наилучший способ добавить новый экземпляр датчика в массив датчиков, где БД генерирует идентификатор для датчика?