ruby - # 的未定义方法“集合”你的意思?集合(NoMethodError)。红宝石
问题描述
我正在使用自动化测试。这是我第一次使用 mongoDB。
因此,我正在尝试创建一个通用方法来查找所需集合中的文档,该集合将作为参数传递。我找到了一些例子,他们都使用了这个.collection
方法。它似乎不适用于我的项目。
这是我的数据库客户端代码:
require 'mongo'
require 'singleton'
class DBClient
include Singleton
def initialize
@db_connection = Mongo::Client.new($env['database']['feature']['url'])
end
def find(collection, value)
coll = @db_connection.collection(collection)
coll.find(owner: 'value')
end
end
这就是我如何实例化我的方法
DBClient.instance.find('collectionTest', 'Jhon')
当我运行测试时,我收到以下消息:
undefined method `collection' for #<Mongo::Client: cluster=localhost:>
Did you mean? collections (NoMethodError)
我使用的 gem 是 mongo (2.6.1)。
我做错了什么?
解决方案
根据文档,Mongo::Client 中确实没有方法集合。您正在寻找的是[] 方法。代码将如下所示:
require 'mongo'
require 'singleton'
class DBClient
include Singleton
def initialize
@db_connection = Mongo::Client.new($env['database']['feature']['url'])
end
def find(collection, value)
coll = @db_connection[collection]
coll.find(owner: value)
end
end
编辑:我也用 find 本身改变了行。在您的原始代码中,它会找到所有者为“值”字符串的文档。我假设您想要所有者与发送到函数的值匹配的文档。
推荐阅读
- pandas - 名称 _stringify_path 未定义
- amazon-web-services - SQS 策略不授予访问权限
- python - 运算符作为 IF 的参数返回 SyntaxError: invalid syntax
- python - Python中的地理插值
- excel - VBA 选择表中符合条件的数据
- android - 服务内的 startActivity 不适用于所有 android 设备
- firebase - Go 是否支持实时 Firebase 事件?
- python - libdouble-conversion.so.1:无法打开共享对象文件:没有这样的文件或目录
- python - 如何在 True 时替换?
- ssl - 使用 IP 时 SSL 异常名称与证书的通用名称不匹配