Tag: rethinkdb

使RethinkDB对数据更改运行一个请求

我可以使用支持语言的库来监听更改。 在我的情况下是NodeJS,代码如下所示: r = require('rethinkdb') r.connect() .then(function (conn) { return r.table("messages").changes().run(conn); }) .then(function (change) { change.each(function (err, item) { console.log(item) }); }); 但是我想知道,如果可以运行一些请求,或者由RethinkDB引擎自己执行的过程,以便不必在语言级别添加侦听器过程。 由于RethinkDB一直在运行,并且正在倾听变化,我想从技术上讲可以在那里做一些工作?

Rethinkdb更改提要只返回更改

我在连接到rethinkdb的Node js中使用rethinkdbdash。 使用下面的代码,我得到了整个文档已被更改(旧的和新的值)。 r.db(db).table('test') .changes() .run() .then(function(feed){ feed.each(function(err, item){ io.emit('change message', item); }) }) 我只想要改变的领域和新的价值。 任何想法如何解决这个问题? 提前致谢!!

使用Hapi,MongoDb,NodeJS和AngularJS创build实时项目

我正在使用Hapi,MongoDb,NodeJS和Angular创build我的第一个Web应用程序。 我已经可以从我的应用程序获取并保存一些数据。 现在每次我需要刷新浏览器中的数据时,我必须重新启动服务器。 由于数据只能在服务器启动时使用以下函数获取: var getUsers = function(db, callback) { db.collection("users", function(err, collection) { if (err) return callback(err, "error getting collection"); collection.find({}).toArray(function(err, users) { if (err) return callback(err, "error getting find()"); console.log("returning users list: "); Common.setUsers(users); //console.log(Common.getUsers()); }); }); }; 用户可以通过Common.getUsers()获取 现在如果我想创build一个列表来显示我 – 实时 – 哪些用户注册我的应用程序? 所以不需要重新启动服务器。 我怎样才能做到这一点? 我已经做了一些search,发现了RethinkDb,它有更换 。 (我希望我早点发现)。 MongoDb没有像Rethink实现它的方式进行更换。 有没有一种方法可以自己创build这些换卡? 或者是有另一个工具,可以实现这个我与MongoDb的工作?

如何在es2015中导入rethinkdbdash

我是在node.js中编程的新手。 我已经安装了gulp-babel ,它把我的js文件放在/ src里,并把经过转换的源文件移动到/ dist文件夹(这个工作真棒)。 我想使用rethinkdbdash而不是rethinkdb 。 在es5中,我们将执行以下操作: var r = require('rethinkdbdash')(); 在es6中,使用导入的正确方法是什么? import 'rethinkdbdash'; var r = rethinkdbdash(); 谢谢您的帮助。 我希望答案也能帮助有同样问题的人。

RethinkDB:​​合并两个表,如果一个不包含其他的关键

我正在合并两个表。表1的主键存在于表2中,但是在某些情况下,表2中没有关键的外键。存在没有键的错误。 我只想在表中存在关键字的情况下合并表; r.table('sport').filter({sport_id:sport_id}).merge(function(doc){ return { terminology: r.table('sport_terminology').get(doc("terminology_id")) } }) .run(conn, sport); 现在,如果运动不包含术语作为关键,而不是射击错误。 如果密钥不存在,请给我解决scheme合并绕过

RethinkDB:​​条件upsert(只有当特定的字段匹配)?

我知道rethinkDB的insert()有一个upsert选项。 例如,从文档: rethinkdb.table('marvel').insert( { superhero: 'Iron Man', superpower: 'Arc Reactor' }, {upsert: true, return_vals: true} ).run(conn, callback) 但是可以说,对于超级大国来说, 可能有{superhero: 'Iron Man'}logging,我想要插入{ superhero: 'Iron Man', superpower: 'Arc Reactor' }或更新任何现有的{superhero: 'Iron Man'}战绩? 简而言之:我如何插入,以便现有logging只有在特定字段匹配时才会更新? 编辑:似乎这是用.replace()完成的: 以下是replace()文档中的重要部分: 如果您对不在表格中的键进行点replace,则可以插入新的文档 我不确定“点replace”是什么意思 – 但我认为这只是代替。 var latestDoc = { superhero: 'Iron Man', superpower: 'Arc Reactor' } var mergeOrCreate = function(existingDoc) { if ( […]

rethinkdb谷歌计算引擎断开连接

您好我在谷歌计算引擎实例上运行rethinkdb设置。 我主要使用更改提要(套接字连接)到数据库,并从我的本地计算机或应用程序连接到这些。 为此我使用npm包rethinkdb-websocket-server和client。 虽然我遇到连接断开的情况,但工作正常。 它工作了大约10分钟,然后连接下降,然后重新开始.. 除了一些僵尸networking试图进入google-compute-engine实例,我没有注意到任何特殊的东西,我在串口控制台中看到了这些。 那可能会导致断开连接,在这种情况下,我该如何防止这种情况? 它工作正常,如果我在我的本地主机上运行安装程序,那么根本没有断开连接。 rethinkdb日志没有提及任何问题。 任何人有什么可能导致这样的事情的想法,我甚至不知道从哪里开始寻找,所以任何build议表示赞赏。

RethinkDB / Horizo​​n:与Express集成:访问Horizo​​n数据服务器端?

Horizo​​n.io Github上有一个快速集成的例子,如下所示: Horizo​​n express服务器示例 我明白这个例子显示了什么:如果你有一个现有的Express服务器,你可以添加一个Horizo​​n服务器,这个服务器公开了一个客户端路由,以便他们可以通过websocket连接到地平线服务器。 但是,服务器的快速部分是否还有任何方法可以访问Horizo​​n中的集合? 例如,执行本地身份validation,CRON作业等,或者使API端点接受PUT / POST请求。 据我所知,直接连接到Horizo​​n正在使用的RethinkDB数据库并没有那么有用,因为名为Fusion的库在表中dynamic设置元数据,以便获得Horizo​​n用于的类似Firebase的行为。 如何访问Horizo​​n数据服务器端?

testing承诺使用testdoublejs多个thens

我正在使用testdouble在我的node.js项目中存根。 这个特定的函数包装一个承诺,并有多个函数本身内的调用。 function getUser (rethink, username) { return new Promise((resolve, reject) => { let r = database.connect(); r.then(conn => database.table(tablename).filter({username})) .then(data => resolve(data)) .error(err => reject(err)); }); } 所以我想确定决定和reject是否正确处理基于错误条件。 假设有一些我需要validation的自定义逻辑。 为我的testing import getUser from './user'; import td from 'testdouble'; test(t => { const db = td.object(); const connect = td.function(); td.when(connect('options')).thenResolve(); const result = getUser(db, […]

RethinkDB – 更新嵌套数组

我有一个调查表,看起来像这样: { id: Id, date: Date, clients: [{ client_id: Id, contacts: [{ contact_id: Id, score: Number, feedback: String, email: String }] }] } 我需要更新特定联系人下的score和feedback字段。 目前,我正在运行这样的更新: function saveScore(obj){ var dfd = q.defer(); var survey = surveys.get(obj.survey_id); survey .pluck({ clients: 'contacts' }) .run() .then(results => { results.clients.forEach((item, outerIndex) => { item.contacts.forEach((item, index, array) => { if(Number(item.contact_id) === […]