返回顶部
首页 > 资讯 > 后端开发 > GO >如何使用 mongo-go-driver 模拟光标
  • 716
分享到

如何使用 mongo-go-driver 模拟光标

2024-04-04 23:04:30 716人浏览 八月长安
摘要

你在学习golang相关的知识吗?本文《如何使用 monGo-go-driver 模拟光标》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作

你在学习golang相关的知识吗?本文《如何使用 monGo-go-driver 模拟光标》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我刚刚学习了 go 语言,然后使用 https://GitHub.com/mongoDB/mongo-go-driver 与 MongoDB 和 Golang 一起制作 REST api,然后我正在进行单元测试,但我陷入了困境当嘲笑 Cursor MongoDB 时,因为 Cursor 是一个结构,是一个想法还是有人创造了它?


解决方案


在我看来,模拟此类对象的最佳方法是定义一个接口,因为 go 接口是隐式实现的,您的代码可能不需要那么多更改。一旦你有了一个界面,你就可以使用一些第三方库来自动生成模拟,比如 mockery

如何创建界面的示例

type cursor interface{
  next(ctx context)
  close(ctx context)  
}

只需更改接收 mongodb 游标的任何函数即可使用自定义接口

我刚刚遇到了这个问题。因为 mongo.cursor 有一个内部字段保存 []byte -- current,为了完全模拟,您需要包装 mongo.cursor。以下是我为此创建的类型:

type MongoCollection interface {
    Find(ctx context.Context, filter interface{}, opts ...*options.FindOptions) (MongoCursor, error)
    FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) MongoDecoder
    Aggregate(ctx context.Context, pipeline interface{}, opts ...*options.AggregateOptions) (MongoCursor, error)
}

type MongoDecoder interface {
    DecodeBytes() (bson.Raw, error)
    Decode(val interface{}) error
    Err() error
}

type MongoCursor interface {
    Decode(val interface{}) error
    Err() error
    Next(ctx context.Context) bool
    Close(ctx context.Context) error
    ID() int64
    Current() bson.Raw
}

type mongoCursor struct {
    mongo.Cursor
}

func (m *mongoCursor) Current() bson.Raw {
    return m.Cursor.Current
}

不幸的是,这将是一个移动目标。随着时间的推移,我必须向 mongocollection 接口添加新函数。

好了,本文到此结束,带大家了解了《如何使用 mongo-go-driver 模拟光标》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多Golang知识!

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用 mongo-go-driver 模拟光标

本文链接: https://lsjlt.com/news/596659.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用 mongo-go-driver 模拟光标
    你在学习Golang相关的知识吗?本文《如何使用 mongo-go-driver 模拟光标》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作...
    99+
    2024-04-04
  • 使用 Go Mongo-Driver 和 mtest 从 UpdateOne 模拟 UpdateResult
    php小编百草在这篇文章中将介绍如何使用Go Mongo-Driver和mtest从UpdateOne模拟UpdateResult。通过这种方法,我们可以在测试环境中模拟出Update...
    99+
    2024-02-09
  • 使用 mongo-go-driver,如何有效地从 WriteError 中检索重复的字段名称?
    最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《使用 mongo-go-driver,如何有效地从 WriteError 中检索重复的字段名称?》主要...
    99+
    2024-04-04
  • win7虚拟光驱如何使用
    这篇文章主要介绍“win7虚拟光驱如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7虚拟光驱如何使用”文章能帮助大家解决问题。 ...
    99+
    2023-04-07
    win7
  • VSCode中如何添加并使用多光标
    这篇文章主要介绍“VSCode中如何添加并使用多光标”,在日常操作中,相信很多人在VSCode中如何添加并使用多光标问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VSCode中如何添加并使用多光标”的疑惑有所...
    99+
    2023-06-29
  • win101909夜间模式光标白色如何解决
    本文小编为大家详细介绍“win101909夜间模式光标白色如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win101909夜间模式光标白色如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法一: ...
    99+
    2023-07-01
  • 如何使用MySQL模拟Redis
    这篇文章给大家分享的是有关如何使用MySQL模拟Redis的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。redis支持近十种数据类型,最常用的有5种。string、hash、zs...
    99+
    2024-04-02
  • 如何在mongodb中使用driver
    如何在mongodb中使用driver?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MongoDB 是一个基于分布式文件存储的数据库。由 ...
    99+
    2024-04-02
  • Win10虚拟光驱如何使用如何装载和弹出
      很显然,微软希望Win10成为功能上集大成的一个操作系统。这不,微软为Win10添加了虚拟光驱的功能。只要Win10系统中有镜像文件,Win10都可以对它进行装载和弹出,无需第三方软件。   操作方法   win10...
    99+
    2023-06-15
    Win10 虚拟光驱
  • 用虚拟光驱装WIn7\Win8.1双系统 魔方虚拟光驱如何用?
    首先,我们需要了解一下什么是虚拟光驱。 根据百度百科的词条解释,虚拟光驱是一种模拟(CD/DVD-ROM)工作的工具软件,可以生成和你电脑上所安装的光驱功能一模一样的光盘镜像,其工作原理是先虚拟出一部或多部虚拟光驱后,将...
    99+
    2023-06-03
    WIn7 Win8 虚拟光驱 魔方虚拟光驱 Win8.1双系统 魔方
  • go语言基础 seek光标位置os包的使用
    语法: os.Open()-->*File,err ***** File.Seek(offset, whence),设置光标的未知 offset,偏移量 whence,从...
    99+
    2022-06-07
    go语言基础 GO go语言
  • 如何在虚拟机中使用光盘驱动器
    在虚拟机中使用光盘驱动器通常有两种方法: 使用虚拟机软件自带的功能 许多虚拟机软件如VMware和VirtualBox都支持在虚拟机中挂载光盘驱动器。您可以通过虚拟机软件的设置界面选择要挂载的光盘镜像文件或物理光盘,并将其连接到虚拟机。...
    99+
    2024-06-11
    virtualbox
  • 使用时EditText时光标不显示如何解决
    这期内容当中小编将会给大家带来有关使用时EditText时光标不显示如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。解决方法有以下3种1、在Edittext中加入以下属性android:cursor...
    99+
    2023-05-31
    edittext 用时
  • 使用Python来模拟鼠标的点击
      2014-06-09 16:08 7442人阅读 评论(0) 收藏 举报  分类: python(18)  使用Python来模拟鼠标的点击 转载自http://blog.163.com/oatnehc0924@1...
    99+
    2023-01-31
    鼠标 Python
  • 使用 Go 编写模拟 MongoDB 的响应
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《使用 Go 编写模拟 MongoDB 的响应》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关...
    99+
    2024-04-04
  • jquery如何绑定元素使其失去光标
    本篇内容介绍了“jquery如何绑定元素使其失去光标”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • win10版本1903夜间模式光标白色如何解决
    这篇“win10版本1903夜间模式光标白色如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10版本1903夜间...
    99+
    2023-07-01
  • Vue中如何使用mock模拟数据
    目录Vue使用mock模拟数据Vue使用mock数据的几种方式方式一:借助mockjs插件实现本地mock数据方式二:在public文件夹放mock数据(无需使用mockjs插件)方...
    99+
    2024-04-02
  • 如何使用JavaSE来模拟斗地主
    本篇内容主要讲解“如何使用JavaSE来模拟斗地主”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用JavaSE来模拟斗地主”吧!Java可以用来干什么Java主要应用于:1. web开发;...
    99+
    2023-06-14
  • GNS3使用详解(gns3如何模拟ids
    第一gns3如何模拟juniper,第二gns3如何模拟ids。        juniper 学网络的人应该都知道这个,但是接触这个的人却不多,本人也是菜鸟也没有接触过,惭愧。今天我们来说说gns如何模拟juniper,为以后的学习搭建个...
    99+
    2023-01-31
    详解 ids
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作