mongomapper(より正確には、mongomapperクエリを構築するライブラリ)は、呼ばれるフィールドをキャストします id
に _id
ActivereCordとの平等のために自動的にあるため、呼び出される2つの異なるフィールドを使用することはできません _id
と id
. 。ログの生成されたクエリを見ると、それがわかります。
この場合、別のフィールド名を使用する必要があります。
質問
SinatraアプリでMongomapperを使用してシンプルなオークションサイトを使用しようとしていますが、簡単なクエリを実行して結果を得るのに苦労しています。
before '/auction/:id' do
connection = Mongo::MongoClient.new
db = connection.db('auction')
collection = db['auctions']
@query = Plucky::Query.new(collection)
end
get '/auction/:id' do
@auction = @query.where({:id => params["id"].to_i})
"#{@auction.inspect}"
end
しかし、私は出力を得ません @auction.inspect
ブラウザで。ただし、クエリを使用する場合 @auction = @query.all
データベース内のすべてのレコードを取得します。
Params(url localhost/auction/3を使用する場合):
{"splat"=>[], "captures"=>["3"], "id"=>"3"}
query.all
出力:
[{"_id"=>BSON::ObjectId('529cbbee21f7f10dd4000005'), "id"=>2, "name"=>"jump", "price"=>1.42}, {"_id"=>BSON::ObjectId('529cbbf821f7f10dd400000e'), "id"=>3, "name"=>"here", "price"=>93.34}]
解決
mongomapper(より正確には、mongomapperクエリを構築するライブラリ)は、呼ばれるフィールドをキャストします id
に _id
ActivereCordとの平等のために自動的にあるため、呼び出される2つの異なるフィールドを使用することはできません _id
と id
. 。ログの生成されたクエリを見ると、それがわかります。
この場合、別のフィールド名を使用する必要があります。
他のヒント
.where
協会を構築しますが、次のような方法を呼び出す必要があります all
また first
クエリを実行して結果を取得するには:
@auction = @query.where({:id => params["id"].to_i}).first