我在我的应用程序中存储用户并将他们视为宇宙的中心,我现在尝试引入 Org 的概念,用户可以是许多 Orgs 的成员,然后某些设置等将属于 Org。我正在尝试创建的功能是搜索可以找到用户 ID 的所有组织以及所有者或成员之一,并返回一个组织列表,然后在客户端呈现详细信息。
我遇到的问题与 Mongo Find 结果的处理和转换有关,然后是如何处理并转换为我可以在最后安全返回的格式。
目前我无法返回错误的数据
不能在 return 语句中使用 &org (*[]*model.Org 类型的值) 作为 *model.Org 值
组织模式
封装模型
// Org is the structure of a org
type Org struct {
ID string `json:"id" bson:"_id"`
Name string `json:"name" bson:"name"`
Owner string `json:"owner" bson:"owner"`
Members []string `json:"members" bson:"members"`
Token string `json:"token" bson:"-"`
VerifyToken string `json:"verifyToken" bson:"verifyToken"`
}
功能
// GetOrgByUserID returns a user by his id
func (db *DB) GetOrgByUserID(id string) (*model.Org, error) {
findOptions := options.Find()
var org []*model.Org
cur, err := db.collections.orgs.Find(context.TODO(), bson.D{{"owner", id}}, findOptions)
if err != nil {
return nil, err
}
// Iterate through the cursor
for cur.Next(context.TODO()) {
var elem model.Org
err := cur.Decode(&elem)
if err != nil {
return nil, err
}
org = append(org, &elem)
}
if err := cur.Err(); err != nil {
return nil, err
}
// Close the cursor once finished
cur.Close(context.TODO())
return &org, nil
}