2013-12-12 2 views
0

Есть много похожих вопросов, я знаю, однако мое дело несколько отличается, и я попытался подходы, описанные в этих ответах, но все еще не работал. Я знаю, мне что-то не хватает, но я не могу понять, что.Как экспортировать файл с узлом

У меня есть эта структура:

корень - модели - categories.js - ... - маршруты - main.js - ... app.js ...

Так что в моих категориях у меня есть следующие функции/структура:

/* 
* Initial variable setting 
*/ 
var Db    = require('mongodb').Db, 
    Connection  = require('mongodb').Connection, 
    Server   = require('mongodb').Server, 
    BSON   = require('mongodb').BSON, 
    ObjectID  = require('mongodb').ObjectID; 

Categories = function(host, port) { 

    this.db = new Db('hoiepos', new Server(host, port, { safe: false }, { auto_reconnect: true }, {})); 

    this.db.open(function(){}); 

}; 

/* 
* Get collection 
*/ 
Categories.prototype.getCollection = function(callback) { 

    this.db.collection('categories', function(error, category_collection) { 

     if(error) callback(error); 

     else callback(null, category_collection); 

    }); 

}; 
... 
exports.Categories = Categories; 

В файле есть, очевидно, другие функции, но для краткости я их опустил. В файле мои маршрутов У меня есть:

var Categories = require('./models/categories'); 

exports.Melo = function(req, res) { 

    Categories.findAll(function(error, prds) { 

     res.send(prds); 

    }); 

}; 

И в моем app.js у меня есть:

var route = require('./routes').Melo; 

app.get('/test', route); 

Тем не менее, когда я пытаюсь запустить узел я получаю ошибку о том, что узел не может найти модуль './models/categories'.

Важно, чтобы заметить, что в моделях/и в маршрутах/будут другие файлы, то есть:/модели/пользователей,/модели/заказы, маршруты/пользователей, маршруты/заказы и т.д.

Что я делаю неправильно?

Обратите внимание, что я не использую Mongoose.

Большое спасибо за вашу помощь.

ответ

0

Если Узел не может найти модуль './models/categories', вы, вероятно, используете неправильный путь. Если ваша структура проекта, как это:

корень

--models

---- categories.js

--routes

---- index.js

, тогда в файле маршрута вы должны использовать var Categories = require('../models/categories');

+0

Да, но в этом случае se, ошибка, которую я получаю, отличается от: Object # не имеет метода findAll, который, хотя я еще не добавил в приведенном выше примере, присутствует в файле categories.js. – WagnerMatosUK

+0

Изменить последнюю строку в категориях ('export.Categories = Категории;') на 'module.exports = new Categories();', и она будет работать. Вы ошибаетесь: 1) вы переходите к функции конструктора вместо объекта для экспорта. 2) вы передаете его как свойство объекта экспорта, а не как объект. – berrunder

+0

Привет, Berrunder. К сожалению, это тоже не сработало. Теперь у меня возникла ошибка из модуля MongoDB: /.../node_modules/mongodb/lib/mongodb/connection/connection_pool.js:15 throw new Error («host должен быть указан [« + host + »]»); ^ Ошибка: хост должен быть указан [undefined] при новом экспорте.ConnectionPool (/ .../node_modules/mongodb/lib/mongodb/connection/connection_pool.js:15:11) – WagnerMatosUK

Смежные вопросы