문제

간단한 경매 사이트에 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 데이터베이스 내에서 모든 레코드를 얻습니다.

매개 변수 (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 (또는 더 정확하게, Plucky, Mongomapper Queries를 구축하는 도서관) id 에게 _id ActiveRecord로 패리티를 자동으로 사용하므로 두 개의 다른 필드를 사용할 수 없습니다. _id 그리고 id. 로그에서 생성 된 쿼리를 보면 알 수 있습니다.

이 경우 다른 필드 이름을 사용하려고합니다.

다른 팁

.where 협회를 구축하지만 다음과 같은 방법을 호출해야합니다. all 또는 first 쿼리를 수행하고 결과를 얻으려면 :

@auction = @query.where({:id => params["id"].to_i}).first
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top