2016-01-20 79 views
2

我想运行一个查询,获取从提供的日期到今天为止的所有文档的lastUpdateDateRethinkdb查询两个日期之间的数据

lastUpdateDated的定义如下

lastUpdateDate = new Date() - >Tue Jan 19 2016 20:45:32 GMT+00:00

RethinkDB Admin console

r.db('water').table('ground_water').filter(function (test) { 
    return test("lastUpdateDate").during(r.time(2015,1,1, 'Z'), r.now().date()) 
}); 

下工作,但这里是实际的代码(我要做的日期一些处理)

.table('ground_support_water_tests') 
       .filter(function(test) { 
       return test("lastUpdateDate").during(
        r.time(2016,1,19, 'Z'), 
        r.now().date()) 
       }) 
       .run() 
       .then((results) => { 
       console.log(results); 
       done(null, results); 
       }) 
       .catch((err) => {console.log(err); }); 

这不会返回错误或结果。我显然不喜欢在那里对日期进行硬编码,所以我有一些逻辑来制作新的r.time(yyyy,dd,mm),但是这给了我与这个硬编码相同的结果。

+0

你可以显示你的数据的例子,比如“lastUpdateDate”是什么样子吗? – dalanmiller

+0

当然...新增'Tue Jan 19 2016 20:45:32 GMT + 00:00' –

回答

2

我认为你的查询可能包含一些陷阱。

首先,我建议你添加rightBound: "closed"选项。因为你在date()比较,你根本不在乎时间。

其次,我建议你改变test("lastUpdateDate") - >test("lastUpdateDate").date()因为你与date删除时间,它成为Wed Jan 20 2016 00:00:00 GMT+00:00而作为test("lastUpdateDate")Wed Jan 20 2016 18:00:00 GMT+00:00例如。

所以让我们试试这个:

.table('ground_support_water_tests') 
       .filter(function(test) { 
       return test("lastUpdateDate").date().during(
        r.time(2016,1,19, 'Z'), 
        r.now().date()) 
       }, {rightBound: "closed"}) 
       .run() 
       .then((results) => { 
       console.log(results); 
       done(null, results); 
       }) 
       .catch((err) => {console.log(err); }); 

更新:

我尝试使用的NodeJS官方驱动:

var r = require('rethinkdb') 

r.connect().then(function(conn) { 
    r.table('t') 
    .filter((test) => { 
     return test("lastUpdateDate").date().during(r.time(2015,1,1, 'Z'), r.now().date(), {rightBound: "closed"}) 
    }) 
    .run(conn) 
    .then((cursor) => { return cursor.toArray() }) 
    .then((data) => { console.log(data) }) 
}) 

在此日期设置:

[{ 
"id": "4917c8a1-1639-400c-964c-458d58b5bfcc" , 
"lastUpdateDate": Wed Jan 20 2016 21:12:51 GMT+00:00 
}] 

查询正确返回数据。

+0

好的建议感谢您的帮助。上述更改没有修复它。我使用'rethinkdbdash'驱动程序。在管理控制台中,我们的两个代码均可使用。 –

+1

您可以尝试切换到官方驱动程序,看看它是否修复,那么我们可以潜水更多?同样对于这些数据,'{ “id”:“4917c8a1-1639-400c-964c-458d58b5bfcc”, “lastUpdateDate”:Wed Jan 20 2016 21:12:51 GMT + 00:00 }'。在RethinkDB控制台上,您的查询失败,我的查询工作。这导致我的答案... – kureikain

+0

只需切换到本机驱动程序,并按预期工作。所以这个问题似乎是'rethinkdbdash'。 –

相关问题