`

NodeJS 使用express、mongolian搭建轻量级web应用

 
阅读更多
摘自:http://www.ibm.com/developerworks/cn/java/j-nodejs/

Node 在 Web 开发人员心目中占据一席之地,一是因为它对并发的处理能力,二是它是按 Web 开发的需求构建的。

1. 导入express、mongolian
最流行的一个第三方 Node 工具是轻量级 Web 开发框架 Express,我们将会用它来开发应用程序. Express 有很多特性,包括复杂路由、动态模板视图(参见 Node 框架 du jour: Jade)和内容协商。Express 是非常轻量级的,没有内嵌的 ORM 或类似东西来加重其负担。在这一方面,Express 无法与 Rails、Grails 或其他有完整堆栈的 Web 框架相比。

Mongolian DeadBeef 是众多的用于 Node 的 MongoDB 库中的一个。我之所以选择它是因为我觉得它名字很有趣,还因为它对本机 MongoDB 驱动的监控功能让我非常满意。

运行一下命令:
npm install express
npm install mongolian
运行完成后在下面目录中可以看到下载的文件:
C:\Users\***\node_modules

2.创建 web.js
var express = require('express');  //使用第三方库
var mongolian = require("mongolian");  //使用第三方库

var app = express.createServer(express.logger());   //通过 createServer 调用创建一个应用程序实例,它会创建一个 HTTP 服务器。
var db = new mongolian("mongo://a_username:a_password@flume.mongohq.com:23034/magnus"); //将连接到由 MongoHQ 托管的实例上,它是 MongoDB 的云供应者。

app.use(express.bodyParser());  //使用 bodyParser。这会让我们能轻松地获取传入的 JSON 文档的属性。

/*然后我们通过 app.put 定义一个端点。在本例中,我们定义一个 HTTP PUT 作为在应用程序根部 (/) 监听的 HTTP 方法。put 调用有两个参数:路由和调用路由时相应的回调。第二个参数是在运行时端点 / 被启动时的调用函数。记住,此回调就是 Node 所谓的事件驱动或事件 I/O,即异步调用回调函数。终端可以同时处理大量请求而不必手动创建线程。*/
app.put('/', function(req, res) {
  var deal = req.body.deal_description;
  var tags = req.body.all_tags;

  //您会发现 insert 语句和 MongoDB shell 中的 insert 一样。这不是巧合,MongoDB 的 shell 也使用了 JavaScript!因此,我们能够轻松地持久化拥有两个字段的文档:deal 和 deal_tags。请注意,我们通过对 tags 字符串使用 split 方法将 deal_tags 设置为数组。
  db.collection("deals").insert({   //持久化来自传入的 JSON 文档的值
     deal: deal,
     deal_tags: tags.split(",")
  })
  console.log("deal is :"  + deal + " and tags are " + tags);
	
  res.contentType('json');
  res.send(JSON.stringify({ status:"success" }));   
});

var port = process.env.PORT || 3000;  //创建用来表示应用程序所监听的端口的变量;可以通过获取 PORT 环境变量或直接设置为 3000 来完成。

//最后,通过调用 listen 方法来启动此应用程序。我们再次传入一个回调函数,它将会在应用程序启动并运行至将消息打印到控制台时被调用.
app.listen(port, function() {
  console.log("Listening on " + port);
});



我建议您下载 WizTools.org 的 RESTClient。有了 RESTClient,您就可以通过对 http://localhost:3000 执行 HTTP PUT 以快速测出 Magnus Server 是否工作正常。
使用一个 HTTP PUT 将一个 JSON 文档提交到 Express 应用程序中
{
"deal_description":"free food at Freddie Fingers",
"all_tags":"free,burgers,fries"   
}

MongoDB中结果:
{
  deal:"free food at Freddie Fingers",
  deal_tags:["free", "burgers", "fries"],
  _id:"4e73ff3a41258b7423000001"
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics