我正在使用 Mongo Ruby 驱动程序,并且line 171
在我的代码之前和之后都有这段 Ruby 代码,这显然是它下面的错误的来源(该query.each
行是第 171 行):
query = get_callback.call( "databases", id )
if query.count > 0
puts query.count.inspect + " results: " + query.inspect
res = {}
query.each do |result|
puts result.inspect
end
else
puts "No results" + res.inspect
res = {}
end
错误:
1 results: <Mongo::Cursor:0x3fc15642c154 namespace='myproj.databases' @selector={"_id"=>BSON::ObjectId('4fe120e4a2f9a386ed000001')} @cursor_id=>
TypeError - can't convert Mongo::Cursor into Integer:
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/bson-1.6.4/lib/bson/byte_buffer.rb:156:in `pack'
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/bson-1.6.4/lib/bson/byte_buffer.rb:156:in `put_int'
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/mongo-1.6.4/lib/mongo/cursor.rb:603:in `construct_query_message'
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/mongo-1.6.4/lib/mongo/cursor.rb:466:in `send_initial_query'
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/mongo-1.6.4/lib/mongo/cursor.rb:459:in `refresh'
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/mongo-1.6.4/lib/mongo/cursor.rb:128:in `next'
/Users/myuser/.rvm/gems/ruby-1.9.3-p194/gems/mongo-1.6.4/lib/mongo/cursor.rb:291:in `each'
/Users/myuser/Code/myproj/my_file.rb:171:in `block in initialize'
我的查询对象:{"_id"=>BSON::ObjectId('4fe120e4a2f9a386ed000001')}
我一点也不知道是什么原因造成的。我已经验证了我发现的对象存在,并且query.count
表明我的Mongo::Cursor
.
我在谷歌上没有找到任何关于这个问题的例子,我发现网络上的每个 Mongo/Ruby 都each
像我一样使用迭代器。有谁知道这个错误的原因是什么?我注意到我在尝试使用to_a
将集合转换为 JSON 可用对象时也得到了它。
对于它的价值,下面是 byte_buffer.rb 的相关部分。与<<
是line 156
。
def put_int(i, offset=nil)
@cursor = offset if offset
if more?
@str[@cursor, 4] = [i].pack(@int_pack_order)
else
ensure_length(@cursor)
@str << [i].pack(@int_pack_order)
end
@cursor += 4
end