为了账号安全,请及时绑定邮箱和手机立即绑定

如何注册不同集合的 ID

如何注册不同集合的 ID

Go
噜噜哒 2022-09-26 14:50:36
我正在做一个用于销售和创建视频游戏的应用程序的实践,该应用程序的用户将具有仅由管理员分配的多个角色,为此我有两个集合,一个将存储所有角色,另一个用于用户,但我遇到问题,这是如何获取角色的ID, 我能想到的唯一方法是在我的用户模型中有一部分字符串,通过搜索角色名称来保存id,但这种方式不正确,因为它不保存对象的ID。这是我的榜样角色和用户:type Role struct {    ID        primitive.ObjectID `bson:"_id,omitempty" json:"id"`    Name      string             `bson:"name,omitempty"`    State     bool               `bson:"state,omitempty"`    CreatedAt time.Time          `bson:"created_at,omitempty" json:"created_at"`    UpdatedAt time.Time          `bson:"updated_at,omitempty" json:"updated_at"`}type User struct {    ID        primitive.ObjectID `bson:"_id,omitempty" json:"id"`    FirstName string             `bson:"first_name,omitempty" json:"first_name"`    LastName  string             `bson:"last_name,omitempty" json:"last_name"`    Email     string             `bson:"email,omitempty" json:"email"`    Password  string             `bson:"Password,omitempty" json:"Password"`    Avatar    string             `bson:"avatar,omitempty" json:"avatar"`    Role      []string           `bson:"role,omitempty" json:"role"`    CreatedAt time.Time          `bson:"created_at,omitempty" json:"created_at"`    UpdatedAt time.Time          `bson:"updated_at,omitempty" json:"updated_at"`}这是我的创建用户:func CreateUser(w http.ResponseWriter, r *http.Request) {    w.Header().Set("Content-Type", "application/json")    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)    defer cancel()    collection := storage.Connection().Database("testing")    collectionRole := collection.Collection("roles")    collectionUser := collection.Collection("users")    u := &model.User{}    if err := json.NewDecoder(r.Body).Decode(u); err != nil {        http.Error(w, "format incorrect", http.StatusBadRequest)        return    }    var rl []model.Role    var roles []string    cursor, err := collectionRole.Find(ctx, bson.D{{"name", bson.D{{"$in", u.Role}}}})    if err != nil {        http.Error(w, "collection not found ", 404)        return    }
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我的用户模型中的字符串的一部分,它通过搜索角色名称来保存id,但以这种方式不正确,因为它不保存对象的ID。

尝试存储对象 ID 而不是角色字符串名称。因为这将允许您更改角色的名称,而无需更新所有用户集合。

您可以存储基元。对象 ID 按原样,或使用对象 ID.Hex() 和对象 ID从十六进制() 方法存储十六进制字符串。


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信