1

Webページにレコードを吐き出すMongoDBがあります

require 'mongo'
require 'json'

connection = Mongo::Connection.new
db = connection.db("salemDB")
db = Mongo::Connection.new.db("salemDB")
newsCollection = db["news"]

require 'sinatra'
set:port, 2222
get '/' do
    redirect 'index.html'
end

get "/checkMail" do
  newsCollection.find_one({}, {}).to_a.to_json
end

get "/:id" do
 newsCollection.find("_id" => params[:id]).to_a.to_json
end

/checkmailはこれを出力します

(読書の喜びのためにフォーマットされています)

[
   [
      "_id",
      {
         "$oid":"50880c8564a15e2631000001"
      }
   ],
   [
      "date",
      "2012-10-24T17:42:54+02:00"
   ],
   [
      "subject",
      "This is a piece of news"
   ]
]

/50880c8564a15e2631000001はこれを出力します

[]

なぜそれは私のオブジェクトを返さないのですか?

4

1 に答える 1

3

これは、idが実際には文字列でも整数でもないBSON::ObjectIdためです。そのため、これらのいずれかを使用してクエリを実行する必要があります。

これはうまくいくはずです

newsCollection.find("_id" => BSON::ObjectId(params[:id])).to_a.to_json
于 2012-11-01T21:14:40.337 に答える