当前位置: > > > > 如何解决追加数据时第一个参数必须是切片的问题
来源:stackoverflow
2024-04-20 08:54:36
0浏览
收藏
今天给大家带来了《如何解决追加数据时第一个参数必须是切片的问题》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~
问题内容
我正在根据条件进行查询,但附加条件时出现错误,我正在执行的查询是:-
query := bson.M{} query["$or"] = []bson.M{} if keyword != "" { query["$or"] = append(query["$or"], bson.M{"author": bson.RegEx{"(?i).*" + keyword + ".*", "i"}}) query["$or"] = append(query["$or"], bson.M{"title": bson.RegEx{"(?i).*" + keyword + ".*", "i"}}) } if types == "" { query["$or"] = append(query["$or"], bson.M{"type": bson.RegEx{"(?i).*" + types + ".*", "i"}}) } if category == "" { query["$or"] = append(query["$or"], bson.M{"category": bson.RegEx{"(?i).*" + category + ".*", "i"}}) } if tag == "" { query["$or"] = append(query["$or"], bson.M{"tags": bson.RegEx{"(?i).*" + tag + ".*", "i"}}) } if len(ids) > 0 { query["_id"] = bson.M{"$in": ids} }
使用 query["$or"]
附加数据时出现问题。出现的错误是:-
附加的第一个参数必须是切片;有接口 {} 附加的第一个参数必须是切片;有接口 {} 附加的第一个参数必须是切片;有接口 {} 附加的第一个参数必须是切片;有接口 {} 附加的第一个参数必须是切片;有接口 {}
谁能告诉我如何解决这个问题。
解决方案
现在您正在传递一个 interface{}
,正如您从 中看到的那样。因此您需要将其断言为某种类型的切片。
您将 []bson.m
类型的切片分配给之前的值,因此只需断言该类型即可。示例:
query["$or"] = append(query["$or"].([]bson.m), bson.m{"author": bson.regex{"(?i).*" + keyword + ".*", "i"}})
不过,可能更具可读性的是在最后分配您的计算值:
or := []bson.M{} // ... or = append(or, ...) query["$or"] = or
今天关于《如何解决追加数据时第一个参数必须是切片的问题》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注公众号!