Tag: rethinkdb

rethinkDB,然后查询结果

我正在使用nodeJS与本机rethinkDB驱动程序,并有一个基本的select3列查询如下: var runQuery = function() { var items = []; r.connect({host: 'someHost', port:28015, db:'test'}) .then(function(c){ r.table('ebb1') .pluck("col1","col2","col3") .run(c, function(err,cursor){ cursor.each(function(err,result){ if(err) throw err; items.push(result); }) }) }).then(console.log(items)) } 我尝试使用cursor.toArray()build议重新考虑文档,但我得到一个null,当我尝试返回这个,我认为结果太大。 当我在cursor.each()函数console.log(result)我看到我期望的结果,所以我相信他们被推到items数组,但我不确定如何适当地引用列表后,它是完全填充结果数据。 任何帮助或指导,将不胜感激!

你如何在Thinky ORM中匹配一个字段?

我想检查一个表中的字段是否存在(大小写敏感)使用Thinky ORM 。 没有Thinky ,我可以匹配只使用RethinkDB简单的过滤匹配操作的字段: // This makes my variable insensitive. let myFieldInsensitive = '(?i)^' +myFieldSensitive`enter code here`+'$'; // Filter by matching myFieldInsensistive. r.table('myTable').filter(r.row('myField').match(myFieldInsensitive)) .run(myConnection, function (err, result) { console.log(result.length); // returns 1 if myFieldInsesitive was found }) 这段代码将检查mySpecificField是否存在于myTable中 (Case In-sensitive)。 现在,我正在尝试使用Thinky进行相同的匹配 ,但是此ORM不支持以下语法: let myFieldInsensitive = '(?i)^' +myFieldSensitive+'$'; myModel.filter(('myField').match(myFieldInsensitive)}) .run().then((result) => { console.log(result.length); // should […]

RethinkDB / horizo​​n:经过一些使用得到400错误的请求错误导致ReqlRuntimeError.ReqlError 后重新启动

使用horizo​​n dev服务器一段时间后,我突然得到一个“400错误请求错误”。 重新启动服务器后,在terminal中出现以下错误: at ReqlRuntimeError.ReqlError [as constructor] (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\errors.js:23:13) at new ReqlRuntimeError (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\errors.js:90:51) at mkErr (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\util.js:177:10) at Feed.IterableResult._addResponse (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\cursor.js:75:27) at TcpConnection.<anonymous> (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\net.js:360:22) at TcpConnection.cancel (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\util.js:26:16) at TcpConnection.cancel (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\net.js:783:43) at wrappedCb (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\net.js:270:17) at tryCatcher (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\util.js:26:23) at Promise.successAdapter (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\nodeify.js:23:30) at Promise._settlePromiseAt (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\promise.js:579:21) at Promise._settlePromises (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\promise.js:697:14) at Async._drainQueue (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\async.js:123:16) at Async._drainQueues (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\async.js:133:10) at Immediate.Async.drainQueues [as _onImmediate] (c:\Users\carl\AppData\Roaming\npm\node_modules\horizon\node_modules\rethinkdb\node_modules\bluebird\js\main\async.js:15:14) at processImmediate […]

RethinkDB与NodeJS:打开单个连接vs单个静态连接

我目前正在开发一个rethinkdb和node的实时应用程序,并且有许多不同的rethinkdb查询可以在不同的类中运行。 所以,我的问题是,有一个单一的rethinkdb连接,每个查询必须打开和closures,或一个连接,其中每个查询运行,静态可用更有意义? 从这个问题我推断出并行化已经是一种select,所以这是一个更高效的问题。

使用Web套接字从数据库到客户端的实时数据更新/更改

我正在尝试使用Web套接字构build一个实时应用程序。 目前我正在使用ajax从客户端拉(每个固定的时间间隔)来获取数据库表的新变化。 我并不完全了解如何使应用程序实时。 当前实施: 在我的应用程序中,我通过从数据库(MariaDB)的ajax轮询获取数据,并在客户端的表中显示它。 预期的行为: 从客户端没有轮询,每当数据库端发生变化,它应该在所有连接的客户端更新。 在我的search过程中,我遇到了一些解决scheme: Node.js + server.io + oracle数据库 RethinkDB 服务器发送事件 连续查询通知 请帮助我find更好的解决scheme。

如何在RethinkDb中使用getNearest函数?

我有一个有关rethinkdb的问题。 我正在查询获得最近的位置周围的一个特定的点和它的罚款,但问题是,要先筛选结果,然后应用getNearest但getNearest与表可以任何人指导我在这里 这里是代码,它工作正常。 但我想先过滤的结果,然后使用GetNearest位置。 var point = r.point(73.07328600000005,33.633473); r.db('DB').table('infoCenter').getNearest(point, {index: 'location', unit: 'km', maxDist:1, maxResults: 2000} ) .filter(function(kk) { return kk('doc')('Deleted').default(false).eq(false) }) 上面的代码工作正常但是我想要做的是先筛选结果,然后使用getNearest方法。 而getNearest方法只能和table一起工作。 提前致谢

nodeJS中的并发安全短唯一整数ID生成

我有一个节点应用程序,我正在使用rethinkdb作为数据库。 id rethinkdb为每个文档生成的不是人类可读的,不适合现实世界的参考目的。 例如,我创build的每个用户都希望具有一个简短的整数ID,我可以用它来在现实世界中引用该用户。 我从数据库中得到的id不适合。 什么是并发安全的方式来生成一个短的唯一的整数ID?

RethinkDB node.js驱动程序无法正确初始化全局连接variables

遇到一个非常奇怪的问题,可能是特定于我的IDE,WebStorm,因为我不能在terminal执行通过节点时再现此问题。 在下面的示例中: r = require('rethinkdb'); var connection = null; r.connect({host: 'localhost', port: 28015}, function(err, conn) { if (err) throw err; connection = conn; }); console.log(connection); 当我尝试在callback之外logging结果时,我的连接全局variables是“null”。 不过,当我从callback中logging对象时, var connection = null; r.connect({host: 'localhost', port: 28015}, function(err, conn) { if (err) throw err; connection = conn; console.log(connection); }); 我显示一个连接JSON对象。 这似乎是一个简单的范围问题,我似乎无法弄清楚。

rethinkdb:按ID分组并返回另一个attr的计数

我有一个表,有一些像(id,song_id,user_id和vote)等条目..投票可以包含值“喜欢”或“不喜欢” 现在我想按照song_id将它们分组,然后返回来自该组的喜欢和不喜欢的数量 r.db('songs').table('votes').groupedMapReduce( function(vote) { return vote('song_id')}, function(vote) { return vote.pluck('vote')}, function(acc, vote) { return ?????; /* ** some kind of loop to get all the likes and dislikes ** if vote === 'like' likes++ ** if vote === 'dislike' dislikes++ ** return {song_id:song_id, likes:likes, dislikes:dislikes} */ } ) 希望输出像: [ {song_id: 1, likes: 8, […]

RethinkDB:​​有效地selectid不存在于另一个表中

给定两个表格: t1:包含元素的表格 t2:具有从t1处理的ID列表的另一个表 你如何查询t1中所有尚未处理的元素,即t2中没有对应的pid? 为了清楚起见,我正在寻找的functionequalent Select * from t1 where t1.id not in (select pid from t2) 另一种方法是实现一个简单的处理队列来确定t1中的哪些新元素还没有被处理。 更新: 目前我在以下几点: r.db("mydb").table("t1").filter( function(u) { return r.db("mydb").table("t2")("pid").contains( u("id") ).not(); }) 然而,这是非常低效的:特别是,它需要对t2中的每个元素进行全面的表扫描,而不是t1。 有什么方法可以更有效地回报吗? 非常感谢!