我正在调试一个偶尔写入 mongo 集合似乎失败的问题。当我检查错误检查代码时,我发现 Collection 类中的更新方法似乎返回的是 Fixnum 而不是哈希。
这是一个代码片段(带有调试语句)
begin
puts "collection type: #{@db_collection.class}"
status = @db_collection.update(selector, document)
puts "[Warn] Database update returned NULL status" unless status
puts "[Error] Mongo update returned an error: #{status.class}" unless (status == true)
puts "[Error] Mongo update returned an error: #{status}" unless (status == true)
rescue => e
puts "[Warn] Unable to update mongoDB (#{e})"
end
当我运行此代码时,我得到以下输出:
集合类型:Mongo::Collection
[错误] Mongo 更新返回错误:Fixnum
[错误] Mongo更新返回错误:236
根据文档,我期待更新函数返回成功操作的 true 和失败的哈希:
返回: (Hash, true) — 如果确认写入,则返回包含最后一个错误对象的 Hash。> 否则,返回真。
我正在使用 1.8.0 版的 ruby 驱动程序。
我不确定如何正确检查写入是否正确。我知道如果写入失败,驱动程序应该抛出异常,但我没有看到这种情况发生。我不知道如何正确检查状态变量,因为它没有返回我期望的类型。
在此先感谢您的任何帮助。