Задать вопрос
Ivan-P
@Ivan-P

Как разбить nodejs нам модули и передать им значения при require?

Пишу простенький 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?
  • Вопрос задан
  • 830 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы