in server/datasource/mongo/kv/kv_dao.go [708:737]
func (s *Dao) List(ctx context.Context, project, domain string, options ...datasource.FindOption) (*model.KVResponse, error) {
opts := datasource.NewDefaultFindOpts()
for _, o := range options {
o(&opts)
}
cur, total, err := findKV(ctx, domain, project, opts)
if err != nil {
return nil, err
}
defer cur.Close(ctx)
result := &model.KVResponse{
Data: []*model.KVDoc{},
}
for cur.Next(ctx) {
curKV := &model.KVDoc{}
if err := cur.Decode(curKV); err != nil {
openlog.Error("decode to KVs error: " + err.Error())
return nil, err
}
if opts.ExactLabels {
if !util.IsEquivalentLabel(opts.Labels, curKV.Labels) {
continue
}
}
datasource.ClearPart(curKV)
result.Data = append(result.Data, curKV)
}
result.Total = total
return result, nil
}