我的 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 数组的最佳方法是什么?
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
MongoDB 永远不会ID
在服务器端为子文档生成一个。
你真的需要ID
传感器吗?MongoDB 不会抱怨子ID
文档ID
没有ID
.
如果您出于某种原因确实需要 ID,那么您当然可以在客户端创建一个:
sensor.ID := bson.NewObjectId()
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消