How to move route function to another js file in express.js?

I have the following code (app.js):

var express = require('express');
var bodyParser = require('body-parser');
var mongoskin = require('mongoskin');

var routes = require('./routes/index');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

var db = mongoskin.db('mongodb://@localhost:27017/testdb', {safe:true})

app.param('orders', function(req, res, next, collectionName){
  req.collection = db.collection(collectionName)
  return next()
})

app.use('/', routes);

app.get('/api/:orders', function(req, res, next) {
  req.collection.find({} ,{limit:10, sort: [['_id',-1]]}).toArray(function(e, results){
    if (e) return next(e)
    res.send(results)
  })
})

Which works. What I'm going to do is to move the route (/api/:order) to another js file (routes/api.js). Here is the code:

var express = require('express');
var bodyParser = require('body-parser');
var mongoskin = require('mongoskin');

var routes = require('./routes/index');
var api = require('./routes/api');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

var db = mongoskin.db('mongodb://@localhost:27017/testdb', {safe:true})

app.param('orders', function(req, res, next, collectionName){
  req.collection = db.collection(collectionName)
  return next()
})

app.use('/', routes);
app.use('/api', api);

The /routes/api.js file:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res) {
  res.send('respond with a resource');
});

// return all orders
router.get('/:orders', function(req, res, next) {
  req.collection.find({} ,{limit:10, sort: [['_id',-1]]}).toArray(function(e, results){
    if (e) return next(e)
    res.send(results)
  })
})

module.exports = router;

I got the following error:

TypeError: Cannot call method 'find' of undefined

Can anybody tell me what's wrong with my code? Thanks.

I assume req.collection is undefined, because app.param('orders') is not executed for the other router.