rethinkdb_如何在Node.js应用程序中使用RethinkDB

rethinkdb

这篇文章是由同行评审Agbonghama柯林斯马丁·马丁内斯 感谢所有SitePoint的同行评审员使SitePoint内容达到最佳状态!

Web应用程序最常见的任务之一就是保存数据。 没有存储数据的能力,用户将无法为应用程序自定义其首选项,组织其数据或完成类似的任务。
长期以来,Web一直依赖于关系数据库来保存信息。 例如,在网络上PHP和MySQL之间的LIASON是众所周知的。 但是,并非所有数据库都必须是关联的!
在本文中,我们将重点介绍将RethinkDB(开源JSON数据库)与Node.js应用程序一起使用。 我们将使用RethinkDB Node.js驱动程序rethinkdbdash连接到数据库。

但是在开始之前,让我们看一下RethinkDB是什么以及我们可能要在哪里使用它。

介绍RethinkDB

RethinkDB是为实时Web构建的开源JSON数据库。

官方文档指出:

RethinkDB是第一个为实时Web从头开始构建的开源可扩展JSON数据库。 通过公开一个令人兴奋的新访问模型,它颠覆了传统的数据库体系结构–开发人员可以告诉RethinkDB将更新的查询结果实时地连续推送到应用程序,而不必轮询更改。

它提供了每当发生更改时从数据库获取实时更新的功能。

RethinkDB面向需要向连接的客户端发送实时更新的应用程序。 例如,让我们考虑一个使用户能够协同设计计划的应用程序。 当特定用户进行设计更改时,需要将其实时推送到其他连接的客户端,以使设计保持同步。 在这种情况下,可以使用RethinkDB使实时更新成为可能。

弄清楚了RethinkDB有什么用处之后,现在让我们看看如何安装它。

安装Rethinkdb

要在Ubuntu上安装RethinkDB,您需要添加存储库。

source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list
wget -qO- http://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add -

然后,您必须从新添加的存储库中更新软件包信息并安装RethinkDB。

sudo apt-get update
sudo apt-get install rethinkdb

对于其他OS版本,您可以按照官方安装说明进行操作

完成后,在终端上键入以下命令:

rethinkdb

如果一切都正确安装,则RethinkDB应该启动,并且应该在默认端口28015上运行。管理控制台应该可以从http:// localhost:8080访问

安装Node.js客户端Rethinkdbdash

在本教程的简介中,我提到了rethinkdbdash ,我们将使用它与RethinkDB服务器进行交互的Node.js客户端。 它是RethinkDB的高级Node.js驱动程序,具有连接池,对流的支持等。

要安装rethinkdbdash客户端,可以使用npm:

npm install rethinkdbdash

RethinkDB入门

我们将从为演示应用程序创建一个名为SitePoint的数据库开始。 第一步,创建一个名为NodeRethinkDB的项目文件夹。 然后,在项目目录中创建一个名为app.js的文件。

完成后,将客户端模块导入app.js文件,如下所示:

var r = require('rethinkdbdash')();

上面的语句连接到默认端口地址28015并托管localhost 。 如果您需要其他配置,则可以如下设置:

var r = require('rethinkdbdash')({
	port: 28015,
	host: 'localhost'
});

创建数据库

免费学习PHP!

全面介绍PHP和MySQL,从而实现服务器端编程的飞跃。

原价$ 11.95 您的完全免费

使用前面的语句,我们可以创建一个数据库。 这是通过使用dbCreate方法完成的。

r.dbCreate('SitePoint')
.run()
.then(function(response){
	console.log(response);
})
.error(function(err){
	console.log('error occured ', err);
});

如果一切顺利,您将获得如下成功的答复。

{
  config_changes: [ { new_val: [Object], old_val: null } ],
  dbs_created: 1
}

如果您查看运行在端口8080上的RethinkDB管理控制台,则应该能够看到新创建的SitePoint数据库。

rethink_site

建立表格

现在,我们将看到如何使用rethinkdbdash客户端在RethinkDB数据库中创建表。
首先,使用客户端建立与数据库的连接。

var r = require('rethinkdbdash')({
	port: 28015,
	host: 'localhost',
	db: 'SitePoint'
});

现在,我们将使用tableCreate方法在数据库中创建表Employee

r.tableCreate('Employee')
.run()
.then(function(response){
	console.log(response);
})
.error(function(err){
	console.log('error while creating table ', err);
})

默认情况下,主键是id 。 如果需要,可以在创建表时指定它。

r.tableCreate('Employee',{ primaryKey: 'name' })
.run()
.then(function(response){
	console.log(response)
})
.error(function(err){
	console.log('error while creating table ',err)
})

上面的查询返回以下响应:

Creating a pool connected to localhost:28015

{
  config_changes: [ { new_val: [Object], old_val: null } ],
  tables_created: 1
}

插入资料

要将数据插入Employee表中,我们将使用insert方法。

r.table("Employee")
.insert({
    name: "Jay",
    company: "SitePoint"
})
.run()
.then(function(response){
	console.log('Success ',response);
})
.error(function(err){
	console.log('error occurred ',err);
})

上面的代码将数据插入Employee表并返回成功消息。 这是上面查询的响应:

Creating a pool connected to localhost:28015

Success

{
  deleted: 0,
  errors: 0,
  generated_keys: [ 'f64a2bdb-1659-47a9-9bc1-89e8f1ebb2ac' ],
  inserted: 1,
  replaced: 0,
  skipped: 0,
  unchanged: 0
}

插入查询中值得注意的一件事是,我们没有指定id字段。 如果我们愿意,我们可以做到。 否则,它将具有一个自动生成的唯一标识符值。

从表中选择数据

从表中选择数据非常简单。 我们需要指定表的名称,然后选择数据。

r.table('Employee')
.run()
.then(function(response){
	console.log(response);
})
.error(function(err){
	console.log(err);
})

上面的代码段给出了以下输出:

[{
    EmpId: 'bc95940f-084c-48c5-b9fe-dc0a82f380b6',
    name: 'Jay',
    company: 'SitePoint'
}]

从表中选择特定记录

我们使用get方法来获取具有特定主键的记录。 举例来说,如果我们要选择一个EmployeeEmpIdbc95940f-084c-48c5-b9fe-dc0a82f380b6 ,这是我们必须运行查询:

r.table('Employee')
.get('bc95940f-084c-48c5-b9fe-dc0a82f380b6')
.run()
.then(function(response){
	console.log(response);
})
.error(function(err){
	console.log(err);
})

上面的查询将返回ID为bc95940f-084c-48c5-b9fe-dc0a82f380b6Employee的详细信息,如下所示:

[{
    EmpId: 'bc95940f-084c-48c5-b9fe-dc0a82f380b6',
    name: 'Jay',
    company: 'SitePoint'
}]

实时推送更新

RethinkDB的最重要功能之一是它能够实时推送更改,从而减少了轮询开销。 从官方文档中,您可以阅读:

开发人员可以告诉RethinkDB实时地不断推送更新的查询结果,而不必轮询更改。

订阅实时提要可以实现推送更新。 例如,我们可以预订Employee表中的任何更改,如下所示:

r.table('Employee')
.changes()
.run()
.then(function(cursor){
	cursor.each(console.log);
})
.error(function(err){
	console.log(err);
});

现在,将记录插入Employee ,在终端中,我们将看到以下日志:

{
  new_val: {
     EmpId: '57937293-850b-45af-aeb3-e30d2dfd83a2',
     company: 'SitePoint',
     name: 'Raj'
  },
  old_val: null
}

上面的日志用于插入语句,因此old_val为null,而new_val具有值。 如果现有记录被更新,我们将同时拥有old_valnew_val

结论

在本教程中,我们借助RethinkDB Node.js驱动程序rethinkdbdash,了解了如何在Node.js应用程序中使用RethinkDB
如果您想加深话题, 建议您看一下官方文档Rethink Db JavaScript命令参考
您是否曾经使用其他客户端从Node.js连接到RethinkDB?
在下面的评论中分享您的想法和建议!

翻译自: https://www.sitepoint.com/how-to-use-rethinkdb-with-node-js-applications/

rethinkdb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值