RethinkDB JavaScript日期过滤器

Eri*_*sky 5 javascript date filter rethinkdb

我只想查询不到一天的东西......在JS中,它返回true; 为什么重新思考不会返回true,所以也不会返回任何结果?

r.db( "db" ).table("table")
  .filter( function (item) {
    var
        now = new Date(),
        then = new Date( item.upload_date );
    return now - then > 1000*60*60*24
  });
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

r.db( "db" ).table("table")
  .filter( function (item) {
    var
        now = new Date(),
        then = new Date( item( "upload_date") );
    return now - then > 1000*60*60*24
  });
Run Code Online (Sandbox Code Playgroud)

编辑:这绝对item( "upload_date" )是我没有返回日期字符串......我应该在那里使用什么呢?

Eri*_*sky 4

ReQL 足够智能,可以解析字符串并对它们进行排序。如果您的日期格式正确,它仍应使用.lt行上的 进行过滤。

r.db("database").table("table")
    .filter( r.row('upload_date')
    .lt( new Date( new Date() - (24*60*60*1000) ).toISOString().replace(/\..{4}/, '').replace(/T/, ' ') ) )
Run Code Online (Sandbox Code Playgroud)

——
干杯

- 编辑 -

(用于学习或测试使用 Regex101.com )

方法中请求的正则表达式String.replace()

FIRST -(转储时间码的结尾)

例如:“2017-03-20T17:17:37.966Z”->“2017-03-20T17:17:37”

  • 找到第一个字面句号。\.
  • -> 以及之后的任意 4 个字符.{4}

将上面的组替换为空引号,或者什么都不替换

第二-

例如:“2017-03-20T17:17:37”->“2017-03-20 17:17:37”

  • 查找该角色的第一个实例T

将上面的组替换为空格字符或“”

这将字符串设置为能够在 rethink db 内进行比较

注意:RethinkDB 作为一个项目已被放弃,但将开源。如果您需要支持,请考虑为您的项目提供其他资源。