Пишу простенький REST API на Nodejs - все пока что в одном файле. Решил вынести запроры в файлы рпо рубрикам:
файл tasks.js
module.exports = function(app, db) {
app.get('/tasks', (req, res) => {
let findParams = {};
if (req.query.category) {
findParams.category = {};
findParams.category.$in = req.query.category.split(' ');
}
if (req.query.importance) {
findParams.importance = {};
findParams.importance.$in = req.query.importance.split(' ');
}
if (req.query.cost) {
findParams.cost = {};
let cost = req.query.cost.split(' ');
if (cost.indexOf('free') != -1 && cost.indexOf('paid') == -1) {
findParams.cost.$eq = 0;
}
if (cost.indexOf('free') == -1 && cost.indexOf('paid') != -1) {
findParams.cost.$gt = 0;
}
if (cost.indexOf('free') != -1 && cost.indexOf('paid') != -1) {
findParams.cost.$gte = 0;
}
}
// if (err) throw err;
db.collection('tasks').find(findParams).toArray((err, results) => {
res.send(results);
});
});
};
Основной файл index.js:
const express = require('express');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;
const ObjectID = require('mongodb').ObjectID;
const cors = require('cors');
const fs = require('fs');
const path = require('path');
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static('public'));
app.use(bodyParser.json());
app.use(cors());
var db;
MongoClient.connect('mongodb://xxxxxxxxxxxxxxxxxxxxx/swq', (err, database) => {
if (err) {
return console.log(err);
};
db = database;
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function () {
console.log('Node app is running on port', app.get('port'));
});
});
require('./tasks')(app, db);
Но получаю TypeError: Cannot read property 'collection' of undefined.
Как передать db?