これは、トレント インデクサーに関する他の MongoDB の質問への一種のフォローアップです。
私はオープン ソースの torrent インデクサー (本質的にミニ TPB のようなもの) を作成しており、現在、バックエンド用に SQLite と MongoDB の両方を提供しています。
ただし、MongoDB の部分に問題があります。Sinatra では、torrent をアップロードしたり、torrent を検索しようとしたときに取得します。
アップロードでは、トレントにタグを付ける必要がありますが、ここでは失敗します。タグを追加するコードは次のとおりです。
def add_tag(tag)
if $sqlite
unless tag_exists? tag
$db.execute("insert into #{$tag_table} values ( ? )", tag)
end
id = $db.execute("select oid from #{$tag_table} where tag = ?", tag)
return id[0]
elsif $mongo
unless tag_exists? tag
$tag.insert({:tag => tag})
end
return $tag.find({:tag => tag})[:_id] #this is the line it presumably crashes on
end
end
105 行目 (上記) に達し、その後失敗します。どうしたの?また、参考までに、解決策が登場するにつれて、これは他のいくつかの質問に変わる可能性があります.
ありがとう!
編集
そのため、タグの結果を で返す代わりに[:_id]
、elsif 内のブロックを次のように変更しました。
id = $tag.find({:tag => tag})
puts id.inspect
return id
それでもエラーが発生します。デモはhttp://torrent.hypeno.deで、ソースはhttp://github.com/tekknolagi/indexer/で見ることができます。