我想在我的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,最后一个获胜。