Tag: rethinkdb

RethinkDB的短期或长期连接?

我们有一个基于restify的Node.js项目,我们使用RethinkDB作为数据库。 问题是应该从代码的不同部分(从路由处理程序,中间件)访问RethinkDB,但不是所有的请求。 我想知道在这种情况下连接到RethinkDB的最佳方式是什么? 我看到下一个选项: 有一个长连接,存储在某处(我们现在使用的方法), 在每个HTTP请求上连接到RethinkDB,可能有些连接从不使用, 分别连接每个部分,每个HTTP请求可能有多个连接,但没有无用的连接。 我问这个问题是因为我不确定重新思考如何很好地处理短期/长期的连接,以及它们是多么昂贵。 例如,MongoDB更喜欢长连接,但RethinkDB文档中的所有示例都使用每个HTTP请求一个连接。

Node.js同步返回多个asynchronous收益的结果

我正在使用rethinkDB与node.js. 以下请求正常工作: function myFn () { return co(function *() { let query; query = yield r.db("my-db") .table("app") .filter(r.row("id").eq(id)) .run(conn); return query.toArray(); }); } 我想asynchronous返回多个yield的结果,但是下面的失败: function myFn () { return co(function *() { let query, query2; query = r.db("my-db") .table("app") .filter(r.row("id").eq(id)) .run(conn); query2 = r.db("my-db") .table("app") .filter(…) .run(conn); return yield {q1 : query, q2 : query2}; […]

在插入rethinkdb之前,如何使用rediscachingtwitterstream?

我在哪里 我有一个简单的node.js twitterstream消费者跟踪各种井号标签。 通常,这些都是趋势标签,这意味着大量的twitter json正在stream入我的消费者。 我不做在消费者的任何处理的Twitter JSON。 我想要的是 我想在rethinkdb中存储微博json对象。 假设 由于tweets的数量(以及所述卷的不可预测性),我应该避免将tweet json对象插入到rethinkdb中,因为它们被消费(因为tweets进入消费者的速率可能比rethinkdb可以写入的速率更快那些推文)。 由于Redis的处理速度足够快,因此可以将推文json对象直接推送到redis,并让另一个进程将这些推文插入到rethinkdb中。 我希望学习的东西 我的假设是否正确? 这个build筑是否有意义? 如果不是,你能build议一个更好的select吗? 如果我的假设是正确的,这个架构是有意义的, 一个。 使用redis作为推文的缓冲区的最佳方式是什么? 湾 为了在rethinkdb中执行插入操作,读取(和更新/清除)redis缓冲区的最佳方法是什么?

我怎样才能将(concat)两列合并到RethinkDB中

我有一个这样的桌子: { "id": "8ce79ff2-3c33-4a44-87e8-7d4559436ae0" , "name": "Doe" , "prename": "John" }, { "id": "3e611d37-ee45-4af3-96ad-aba09a450d2c" , "name": "Reese" , "prename": "John" } 现在我想收到这样的一列中的名字: {"name": "John Reese"}, {"name": "John Doe"} 我怎样才能结合这两列(与空白)? 我试过这样的东西,但没有奏效。 r.db("bs2").table("customers").map(function(doc){ return doc("name")+doc("prename"); }); 我得到了这个结果: "var_44("name")var_44("prename")" "var_44("name")var_44("prename")" 另外我试图用.add .map,但它没有奏效。 当我得到一个结果它返回的东西与var_xx(“名称”),但没有像string组合它。 也许我需要一个函数,从对象中返回string,但我没有find文档中的东西。 问候,droidsheep

从Javascript中的DateTime对象中提取唯一的date?

我有JSON数组看起来像这样,它的工作正常,但我需要安排他们像DateWise gruopwise [ name: 'Ali', startedAt: Wed Dec 28 2016 15:32:07 GMT+0500 (Pakistan Standard Time), userId: '0002' }, { completedAt: Wed Dec 28 2016 12:51:47 GMT+0500 (Pakistan Standard Time), name: 'Aliy', startedAt: Wed Dec 28 2016 12:43:19 GMT+0500 (Pakistan Standard Time), userId: '212' }, { name: 'Aliy', startedAt: Wed Dec 28 2016 12:43:06 GMT+0500 (Pakistan […]

来自json数组的使用nodejs的单个值

所以我有这个数据从stringify(doc)输出 { "id": "8467fdae-c38c-4b6e-9492-807d7c9eb97e", "message": "send to nodejs" } 但我不知道如何继续从它获得单个值,例如消息。 任何帮助将不胜感激,因为我尝试了不同的方法,他们似乎没有工作

RethinkDB条件连接

我有一个像这样的结构,用于“会话”: { "created_at": Tue Apr 22 2014 23:10:52 GMT+00:00 , "id": "960e9a45-9a06-43c5-be7f-9144ee3f67c8" , "scheduled_time": Wed Apr 23 2014 02:00:00 GMT+00:00 , "reservation": { "created_at": Mon Apr 21 2014 03:00:26 GMT+00:00 , "student_id": "8be76323-98ce-488e-9164-611663bc17ec" } } 我可以通过以下方式轻松地在reservation.student_id上执行join: r.table('sessions').eqJoin( r.row('reservation')('student_id'), r.table('users') ) 我的问题是会话不一定是保留的,只有在学生实际保留会话后才添加该属性。 因此,如果表中没有预订的会话存在,Rethink会告诉我No attribute 'reservation' in object 。 IRC中有人推荐以下内容: r.table('sessions').withFields("reservation").eqJoin( r.row("reservation")("student_id"), r.table("users") ) 但是,此查询将仅检索当前有预留的会话。 我希望获得所有会话,同时也为那些有预订的会话进行join。 有没有办法做到这一点与单个查询,或者我只是需要执行第二个查询后第一个抢没有保留的会议? […]

Rethinkdb与nodejs和expresso

我正在尝试使用rethinkdb并通过expressotesting。 我有function module.exports.setup = function() { var deferred = Q.defer(); r.connect({host: dbConfig.host, port: dbConfig.port }, function (err, connection) { if (err) return deferred.reject(err); else deferred.resolve(); }); return deferred.promise; }); 我正在像这样testing module.exports = { 'setup()': function() { console.log("in setup rethink"); db.setup().then(function(){ console.log(clc.green("Sucsessfully connected to db!")); }).catch(function(err){ console.log('error'); assert.isNotNull(err, "error"); }); } }; 我正在运行这样的代码 expresso db.test.js 但是,即使在错误的情况下,expresso也显示error […]

与deepstream.io交互logging服务器端

我已经在deepstream.io做了一些阅读,到目前为止我已经发现了以下内容: 所有logging都存储在同一个表中(默认为deepstream_records ) 为了与这些数据进行交互, 可以使用客户端(浏览器)和服务器端(节点),但不应该在服务器端(节点)上使用客户端。 问题: 我应该如何与服务器端的logging进行交互? 有什么阻止我改变数据库中的logging吗? 会更改数据库更新客户端订阅中的logging吗? 这会被认为是不好的做法? 为什么所有logging都存储在同一个表中? 来自RethinkDB的数据示例: { "_d": { }, "_v": 0, "ds_id": "users/" }, { "_d": { }, "_v": 0, "ds_id": "users/admin" }

在各种文件中使用Think ORM,而无需重新连接到数据库

我有很多想法的模型,我不得不在每个文件中创build一个对象,因为我有这么多的模型,思考和连接10次。 var dbconfig = require('../config/config.js')['rethinkdb']; var thinky = require('thinky')(dbconfig); var User = require('./user.js'); var type = thinky.type; var r = thinky.r; var Feedback = thinky.createModel("Feedback", { id: type.string(), feel: type.number().required(), // 0 = sad, 1 = happy reason: type.string(), description: type.string(), createdAt: type.date().default(r.now()), createdBy: type.string().required() }); Feedback.ensureIndex("id"); module.exports = Feedback; 我怎样才能做到这一点,以便我不必一直实例化variables,因此每次创build新的连接,仍然能够在所有这些数据模型在自己的单独的文件?