1

時間を比較する必要がある Volt アプリに取り組んでいます。次のようなモデルを使用します。

class Punchcard < Volt::Model
  field :punchtime
end

パンチタイム用の Time オブジェクトを使用してモデルのインスタンスを保存し、それらが ISODate() オブジェクトとして MongoDB に保持されていることを確認できます。これまでのところすべて順調です。

より小さい基準を使用してデータベースからクエリを実行する場合、Volt と volt-mongo が次の呼び出しを行っていることがわかります。

store.punchcards.where({"punchtime" => {"$lt" => punchtime}}).then...

(「punchtime」は Time オブジェクトです) この Mongo クエリに:

db.punchcards.find({"punchtime": {"$lt": "2015-07-08T10:25:05-0700"}})

結果が返されますが、結果は返されません。

パンチカード モデルのインスタンスを保存するときに挿入呼び出しをトレースすると、Time オブジェクトが文字列化されていないことがわかります。

[INFO] task StoreTasks#save in 11.557ms
with args: "punchcards", ["punchcards", "[]"], {"user_id"=>"925b0eb84bc3d2185d1c693a", "punchtime"=>2015-07-08 16:38:49 -0700, "punch_status"=>"Out", "id"=>"75c1a3c35016d30895d38d28"}

したがって、Time オブジェクトは呼び出しでは文字列化されfindますが、save 呼び出しでは文字列化されないため、Mongo はfind.

Volt で $lt / $gt および Time オブジェクトを使用して Mongo にクエリを実行するにはどうすればよいですか?

4

1 に答える 1

0

これはマスターで修正する必要があります。マスターから実行してみて、うまくいくかどうか教えてください。

gem 'volt', github: 'voltrb/volt'
于 2015-07-09T16:27:16.423 に答える