OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

用Orchestrate 5步快速创建Node.js应用


分享到


分类 JS学习   发布 andrewleeson  1396784051812
注意 转载须保留原文链接,译文链接,作者译者等信息。  

发表本文有一个目的:证明用Orchestrate作为node.js驱动的数据平台来创建node.js应用是如此简单和容易。

如果你是新手,那么我告诉你,Orchestrate服务是一个存储和查询数据的平台。我们支持典型的NoSQL查询:Lucene的全文搜索、键/值和文档、图表和时序性事件。

我们有各种各样查询特性的HTTP  API针对仅仅一个HTTP请求。但通常,由于开发人员关注的是工作效率最大化,我们发现用REST客户端将变得更容易,它将这些HTTP调用抽象成我们最喜欢的编程语言。

我们的朋友在Bowery上为Orchestrate写了一个很棒的NodeJS客户端。在GitHub 和NPM上可用。在这篇文章中,Steve Kaliiski (@stevekaliski) 通过构建一个数据服务来创建和更新用户账号来证明orchestrate.js的一些特性。


第一步:建立一个项目

 

为了能跟得上, 从orchestratejs-example上下载示例代码。示例的程序是由Bowery提供支持的。安装指南在README中。


第二步:连接到Orchestrate

 

在Orchestrate服务中,每个API key 属于一个“应用”。Orchestrate应用代表系统上租期的单位。

通过本文的代码我们要创建一个叫 “nodejs-usersapp-demo”的Orchestrate 应用。

注意:Orchestrate中应用名称是全球唯一的,所以当你跟着本文代码操作时,请给应用取另外的一个名字。

首先我们将在Orchestrate Dashboard 中创建应用,然后我们要提取生成的API key在代码中使用。

// An API key looks something like:
//   3854bbd7-0a31-43b0-aa94-66236847a717
var db = require('orchestrate')('your api key')


第三步:存储一个新用户帐户

 

当创建一个新用户账号时,你需要确定用户对象的标识符是唯一的。一般地,它是像UUID,用户名或电子邮箱这样东西。

Orchestrate 提供“条件PUT”的操作,意味着开发人员要指定先决条件来确定PUT请求是否能成功给予已经存在的数据集。

Orchestrate KV PUT请求支持两种可能的先决条件:

  • 如果匹配-对象的新版本将被存储到集合中,当且仅当“ref”(版本)匹配当前存储在集合中的key。在我们的文档中你可以获取更多关于“ref”的知识。
  • 如果不匹配-当且仅当有着相同key的对象不存在时,新对象才会被存储到集合中。

存储一个新的用户账号:

 db.put('users', 'steve@bowery.io', { 
"name": "Steve",
 "hometown": "New York, NY",
 "twitter": "@stevekaliski",
 "password": "my_secret_pass"
}, false)
.then(function (res) {})
.fail(function (err) {})

我们用键值对形式的JSON对象给user对象插入了一个新的对象。第四个参数是条件。Put方法的第四个参数让客户端告诉Orchestrate当不存在不同的value值时才创建对象,比如说告诉Orchestrate 这是一个新用户。


第四步:获取一个用户的账号

 

从Orchestrate中读取数据是非常简单的。例如,让我们看一个用户登陆的例子。用户将登陆信息填写在表单中后提交,之后我们的处理代码如下:

app.post('/login', function (req, res) {
 var body = req.body
 db.get('users', body.email)
 .then(function (res) {
   var user = res.body
   if (user && someHashFunction(body.password) == user.password)
     res.end('Logged in!')
   else
     res.end('Invalid login.')
 })
 .fail(function (err) {
   res.end('Oops')
 })
})

现在如果扩展下我们的应用和用户管理功能,把它变成一个搜索工具,通过它们的家乡来搜索用户。对此,我们可以利用Orchestrate的搜索特性。

db.search('users', 'New York')
.then(function (res) {})
.fail(function (err) {})

随着应用用户量的增长,你可能需要考虑将查询结果分页展示:

db.newSearchBuilder()
.collection('users')
.limit(100)
.offset(10)
.query('Portland')
.then(function (res) {})
.fail(function (err) {})

如果想要更深入的利用Orchestrate的搜索特性,可以看看这篇文章:“Querying the Enron trove with Lucene”。


第五步:连接账户



随着我们应用成长为更具社会化的应用,我们可能需要介绍一些新的特性。通过许多社交网络,用户可能会被友情,兴趣等东西连接起来。因此我们可以利用Orchestrate的图表特性给应用增加此类的数据连接关系。

Orchestrate支持图表功能,这让创建关系变得很容易。让我们考虑两个用户: Steve 和Chris。

Steve已用“steve@bowery.io”创建键值,而Chris已用 “chris@orchestrate.io”创建键值。

他们打算写一篇博客一同发布,在这个社交网络中他们很有可能成为朋友,因此:

db.newGraphBuilder()
.create()
.from('users', 'steve@bowery.io')
.related('friends')
.to('users', 'chris@orchestrate.io')

通过构造一个“newGraphReader”,我们可以查看这个关系:

db.newGraphReader()
.get()
.from('users', 'steve@bowery.io')
.related('friends')


下一步

 

现在你已经掌握了一些Orchestrate的特性,通过查阅NodeJS客户端文档你可以获取更多的信息。

我们的HTTP API文档上同样也有许多有用的信息, 你可以在Dashboard上获取支持或给我们反馈信息,你也可以在HipChat Community channel.上找到我们。访问我们,告诉我们需要改进的地方和你在构建的东西。

最重要的是,用Orchestrate开心的构建优秀的项目。

原文地址: 点此
社区评论 ( Beta版 )
  • #0 冰冰 1397101187000
    不是很明白,需要什么环境么?
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. NODE.JS为什么会成为企业中的首选技术
  2. 为什么你写的Python运行的那么慢呢?
  3. 快乐Node程序员的10个习惯
  4. 我为什么不从NodeJS切换到Go
  5. 用纯CSS实现的箭头
  6. 什么是最好的编程语言?(怎样才能爱上编程呢?)
  7. 该不该闭合这些元素?曾经〈br/〉的写法是错误的
  8. 在JavaScript里写类层次结构?别那么做!
  9. HTML和CSS是什么玩意儿?
  10. 为什么优秀的管理者如此罕见
  11. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - JS学习
  1. [译] JavaScript 开发者经常忽略或误用的七个基础知识点
  2. 通过javascript把图片转化为字符画
  3. 理解JavaScript中的Event Loop
  4. JavaScript教程:Airbnb代码规范
  5. JS学习:JavaScript的核心
  6. Node初学者入门,一本全面的NodeJS教程
  7. 编写更好的jQuery代码的建议
  8. Javascript模块化编程:AMD规范及require.js用法
  9. 我最喜欢的jQuery插件模板
  10. 快乐Node程序员的10个习惯

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号