Commit 8db23cb62ad243d9864417d783b522c453dc4b43

Authored by zhangqijia
1 parent 7cf63b79

fix: 批量删除装备 mongodb deletemany的问题

1 -Subproject commit 4011876adebf1d046b150ec77e1714d25aa7cb35 1 +Subproject commit ca2a212e0e5ed06b6f33e3c4bd4570976a169010
cmd/gameserver/action/RoleAction.go
@@ -173,10 +173,7 @@ func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, in @@ -173,10 +173,7 @@ func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, in
173 logger.Error("loginRpc err: %v", err) 173 logger.Error("loginRpc err: %v", err)
174 return 1, nil 174 return 1, nil
175 } 175 }
176 - filter := make(bson.D, 5)  
177 - for _, id := range req.Id {  
178 - filter = append(filter, bson.E{Key: "id", Value: id})  
179 - } 176 + filter := bson.D{{"id", bson.D{{"$in", req.Id}}}}
180 if err := mongoproxy.DelMany("equipment", filter); err != nil { 177 if err := mongoproxy.DelMany("equipment", filter); err != nil {
181 logger.Error(err.Error()) 178 logger.Error(err.Error())
182 return 2, nil 179 return 2, nil
cmd/gameserver/action/RoleAction_test.go
@@ -2,8 +2,10 @@ package action @@ -2,8 +2,10 @@ package action
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "go.mongodb.org/mongo-driver/bson"
5 "math/rand" 6 "math/rand"
6 "pro2d/common" 7 "pro2d/common"
  8 + "pro2d/common/db/mongoproxy"
7 "pro2d/common/db/redisproxy" 9 "pro2d/common/db/redisproxy"
8 "pro2d/common/logger" 10 "pro2d/common/logger"
9 "testing" 11 "testing"
@@ -20,3 +22,16 @@ func TestGetActionMap(t *testing.T) { @@ -20,3 +22,16 @@ func TestGetActionMap(t *testing.T) {
20 name := getRandomName() 22 name := getRandomName()
21 fmt.Println(name) 23 fmt.Println(name)
22 } 24 }
  25 +
  26 +func TestEquipmentDelRpc(t *testing.T) {
  27 + err := mongoproxy.ConnectMongo(common.GlobalConf.GameConf.MongoConf, common.GlobalConf.GameConf.ID)
  28 + if err != nil {
  29 + logger.Error(err)
  30 + return
  31 + }
  32 +
  33 + filter := bson.D{{"id", bson.D{{"$in", bson.A{"10000020021", "10000020037"}}}}}
  34 + if err := mongoproxy.DelMany("equipment", filter); err != nil {
  35 + logger.Error(err.Error())
  36 + }
  37 +}
common/db/mongoproxy/mongoplugin.go
@@ -90,7 +90,8 @@ func DelOne(coll string, key string, value interface{}) error { @@ -90,7 +90,8 @@ func DelOne(coll string, key string, value interface{}) error {
90 } 90 }
91 91
92 func DelMany(coll string, filter bson.D) error { 92 func DelMany(coll string, filter bson.D) error {
93 - _, err := mongoDatabase.Collection(coll).DeleteMany(context.TODO(), filter, nil) 93 + r, err := mongoDatabase.Collection(coll).DeleteMany(context.TODO(), filter, nil)
  94 + logger.Debug(r.DeletedCount)
94 return err 95 return err
95 } 96 }
96 97