gpt4 book ai didi

javascript - RethinkDB JavaScript 日期过滤器

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:15 24 4
gpt4 key购买 nike

我试图只查询不到一天的东西……在 JS 中这返回 true;为什么 rethink 不返回 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
});

我也试过这个:

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

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

最佳答案

我认为您误解了 ReQL。过滤器功能应该在服务器上运行,而不是在您的客户端上运行。

你必须把它改成这样:

r.db( "db" ).table("table")
.filter(r.now().sub(r.row('upload_date')).lt(60*60*24))

r.now()返回当前时间,假设upload_date存储的是原生RethinkDB时间,可以减去两个时间值,结果是多少秒过去了。然后可以和60*60*24(一天多少秒)比较

写成函数式的会是

r.db( "db" ).table("table")
.filter(function(item) {
return r.now().sub(item('upload_date')).lt(60*60*24))
})

它的编写方式看起来像原始 JavaScript,这可能会让您感到困惑。但事实并非如此。事实上,客户端驱动程序将评估客户端上的函数,以构建查询,将其转换为 RethinkDB 可以理解的 JSON 字符串并将其发送到服务器。它不在客户端上运行来执行比较逻辑。它使用 http://rethinkdb.com/api/javascript 上可用的 API 生成一个 JSON 字符串来告诉 RethinkDB 它想要什么.有关驱动程序如何工作的更多信息:http://rethinkdb.com/docs/writing-drivers/

其次,如果您的 upload_date 不在本地 RethinkDB 时间对象中,您可以尝试将其转换为 RethinkDB 时间类型,以便使用以下一些函数轻松操作:

或者只是尝试在这里发布您的时间,我们会帮助您。

关于javascript - RethinkDB JavaScript 日期过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com