Browse Source

Add multiple query test

Zane Kansil 10 years ago
parent
commit
7de12b9795

+ 21 - 2
frameworks/JavaScript/sailsjs/api/controllers/DatabaseQueryController.js

@@ -33,6 +33,12 @@ var randomWorldId = function() {
   return Math.floor(Math.random() * 10000) + 1;
 }
 
+var worldQuery = function(callback) {
+  World.findOne({
+    where: { id: randomWorldId() }
+  }).complete(callback)
+}
+
 module.exports = {
 
 
@@ -53,9 +59,22 @@ module.exports = {
    * Test 3: Multiple Database Query
    */
   multiple: function (req, res) {
-    return res.json({
-      todo: 'multiple() is not implemented yet!'
+    var queries = req.param('queries');
+    var worlds = [];
+
+    queries = Math.min(Math.max(queries, 1), 500) || 1;
+
+    for (var i = 0; i < queries; i++) {
+      worlds.push(worldQuery)
+    }
+
+    async.parallel(worlds, function(err, results) {
+      // if (queries == 1) {
+      //   results = results[0];
+      // }
+      res.json(results);
     });
   }
+  
 };
 

+ 1 - 0
frameworks/JavaScript/sailsjs/config/bootstrap.js

@@ -12,6 +12,7 @@
 module.exports.bootstrap = function(cb) {
 
   sails.Sequelize = require('sequelize')
+  sails.async = require('async')
 
   // It's very important to trigger this callback method when you are finished
   // with the bootstrap!  (otherwise your server will never lift, since it's waiting on the bootstrap)

+ 3 - 2
frameworks/JavaScript/sailsjs/config/routes.js

@@ -36,8 +36,9 @@ module.exports.routes = {
     view: 'homepage'
   },
 
-  'get /json': 'JsonTestController.get',
-  'get /db':   'DatabaseQueryController.single'
+  'get /json':    'JsonTestController.get',
+  'get /db':      'DatabaseQueryController.single',
+  'get /queries': 'DatabaseQueryController.multiple'
 
   /***************************************************************************
   *                                                                          *

+ 1 - 0
frameworks/JavaScript/sailsjs/package.json

@@ -5,6 +5,7 @@
   "description": "a Sails application",
   "keywords": [],
   "dependencies": {
+    "async": "^0.9.0",
     "ejs": "~0.8.4",
     "grunt": "0.4.2",
     "grunt-contrib-clean": "~0.5.0",