Przeglądaj źródła

Implemented db and queries handlers for Koa

Edward Bramanti 10 lat temu
rodzic
commit
4b1846f4c6

+ 22 - 13
frameworks/JavaScript/koa/app.js

@@ -4,17 +4,7 @@ var cluster = require('cluster')
   , route = require('koa-route')
   , route = require('koa-route')
   , bodyParser = require('koa-bodyparser')
   , bodyParser = require('koa-bodyparser')
   , override = require('koa-override')
   , override = require('koa-override')
-  , mongoose = require('mongoose')
-  , conn = mongoose.connect('mongodb://localhost/hello_world');
-
-var Schema = mongoose.Schema
-  , ObjectId = Schema.ObjectId;
-
-var WorldSchema = new Schema({
-    id                           : Number
-  , randomNumber                 : Number
-}, { collection : 'world' });
-var MWorld = conn.model('World', WorldSchema);
+  , mongo = require('koa-mongo');
 
 
 if (cluster.isMaster) {
 if (cluster.isMaster) {
   // Fork workers.
   // Fork workers.
@@ -29,15 +19,25 @@ if (cluster.isMaster) {
   var app = module.exports = koa();
   var app = module.exports = koa();
   app.use(bodyParser());
   app.use(bodyParser());
   app.use(override());
   app.use(override());
+  app.use(mongo({
+    uri: "mongodb://localhost/hello_world"
+  }));
 
 
   // routes
   // routes
   app.use(route.get('/json', jsonHandler));
   app.use(route.get('/json', jsonHandler));
   app.use(route.get('/db', dbHandler));
   app.use(route.get('/db', dbHandler));
-  // app.use(route.get('/queries', queriesHandler));
+  app.use(route.get('/queries', queriesHandler));
   // app.use(route.get('/fortune', fortuneHandler));
   // app.use(route.get('/fortune', fortuneHandler));
   // app.use(route.get('/update', updateHandler));
   // app.use(route.get('/update', updateHandler));
   app.use(route.get('/plaintext', textHandler));
   app.use(route.get('/plaintext', textHandler));
 
 
+  function *worldQuery() {
+    return yield function(callback) {
+        var randomId = {id: Math.floor(Math.random()*10000) + 1};
+        this.mongo.collection('world').findOne(randomId, {_id: 0}, callback);
+    }
+  }
+
   function *jsonHandler() {
   function *jsonHandler() {
     this.response.body = {
     this.response.body = {
       message: "Hello, world!"
       message: "Hello, world!"
@@ -45,7 +45,16 @@ if (cluster.isMaster) {
   }
   }
 
 
   function *dbHandler() {
   function *dbHandler() {
-    var queries = this.request.queries.queries
+    this.body = yield worldQuery;
+  }
+
+  function *queriesHandler() {
+    var numOfQueries = this.query.queries || 1,
+        queries = [];
+    for (var i = 0; i < numOfQueries; i++) {
+      queries.push(worldQuery);
+    }
+    this.body = yield queries;
   }
   }
 
 
   function *textHandler() {
   function *textHandler() {

+ 7 - 6
frameworks/JavaScript/koa/package.json

@@ -2,12 +2,13 @@
   "name": "koa-tfb",
   "name": "koa-tfb",
   "version": "0.0.1",
   "version": "0.0.1",
   "description": "Koa tests for TechEmpower Framework Benchmarks.",
   "description": "Koa tests for TechEmpower Framework Benchmarks.",
-  "main": "app.js", 
+  "main": "app.js",
   "dependencies": {
   "dependencies": {
-      "koa": "0.18.1"
-    , "koa-route": "2.4.0"
-    , "koa-bodyparser": "1.4.1"
-    , "koa-override": "1.0.0"
-    , "mongoose": "3.8.25" 
+    "koa": "0.18.1",
+    "koa-bodyparser": "1.4.1",
+    "koa-mongo": "^0.3.0",
+    "koa-override": "1.0.0",
+    "koa-route": "2.4.0",
+    "mongoose": "3.8.25"
   }
   }
 }
 }