如何在go-mongo驱动程序中为FindOptions编写包装函数



我想在我的dbobject代码中为FindOptions编写一个包装函数,这样我就可以避免在服务代码中导入包options。基本上,我试图在一个接口下容纳三个功能

SetSkip() 
SetLimit()
SetSort()

这样我就可以做一些类似Find((的事情了。设置跳过((。在单行中设置Limit((,这可行吗?

此外,我想知道MergeFindOptions 的用法

func MergeFindOptions(opts ...*FindOptions) *FindOptions

任何例子都会有很大帮助。

只需将options.FindOptions结构嵌入到自定义结构中。此外,您可以添加一个FindOptions函数来初始化这个自定义结构,就像options.Find()所做的mongo包一样。

package your_db_package
type YourFindOptions struct {
*options.FindOptions
}
func FindOptions() YourFindOptions {
return YourFindOptions{options.Find()}
}
// ---
package your_service_package
import "your_db_package"
func GetItems() {
opts := your_db_package.FindOptions().SetSkip(123).SetLimit(456)
} 

正如名称MergeFindOptions和文档所说,它用于将多个FindOptions合并为一个新的FindOptions:

MergeFindOptions将给定的FindOptions实例组合为一个FindOptions,最后一个获胜。

最新更新