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"}})

即使它应该返回任何结果。

当我在保存 Punchcard 模型的实例时跟踪插入调用时,我看到 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调用时被字符串化,而不是在保存调用时,Mongo 正在对find.

如何在 Volt 中使用 $lt / $gt 和 Time 对象查询 Mongo?

4

1 回答 1

0

这应该在master上修复。尝试从 master 运行,让我知道它是否有效。

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