Я новичок в node.js (и javascript), и я следую учебнику о том, как получить хорошую структуру для приложения.Node.js: организация моего приложения: использование маршрутов и моделей в отдельных файлах, как я могу получить модели из маршрутов?
Во-первых, я хотел иметь свои маршруты в отдельной папке.
Допустим, это мой main.js:
var express = require('express');
const PORT = 3000;
const app = express();
app.set("json spaces", 2);
require('./routes')(app);
app.listen(PORT, function() {
console.log(`users-jwt-api - Port ${PORT}`)
});
В моей "маршрутах" папка, у меня есть два файла: index.js, используемый для загрузки других файлов, и user.js
index.js:
var fs = require('fs');
module.exports = function(app){
fs.readdirSync(__dirname).forEach(function(file) {
if (file == "index.js") return;
var name = file.substr(0, file.indexOf('.'));
require('./' + name)(app);
});
}
user.js:
module.exports = function(app) {
app.get('/users', function(req, res) {
//no bd yet, returning static data, and dont want it here, but in a model
res.json({users:[{username: "titi", password:"toto"},{username: "tata", password:"tutu"}]});
});
};
Это работает как шарм! Хорошо.
Но, чтобы быть ясным, мне не нужен код базы данных в файлах маршрутов, поэтому я пытаюсь добавить папку «models». Я положил внутри index.js, так же, как и для маршрутов, и users.js так:
module.exports = function(app) {
return {
findAll: function(params, callback) {
//no db yet
return callback([{username: "titi", password:"toto"},{username: "tata", password:"tutu"}]);
}
};
};
Я изменил мой main.js, добавив это, как раз перед маршрутами:
require('./models')(app);
Вопрос в том, что я не знаю, как изменить свои маршруты/user.js, чтобы назвать эту модель!
Я хотел бы иметь что-то подобное в маршрутах/users.js:
module.exports = function(app) {
const Users = app.models.users; // not working here : TypeError: Cannot read property 'users' of undefined
app.get('/users', function(req, res) {
Users.findAll({}, function(users) {
res.json({users: users});
});
});
};
Как я могу использовать мою модель с помощью приложения вар?
примечание: я нашел решение с модулем под названием «config» для инъекций зависимостей, но я бы предпочел использовать простое кодирование перед использованием таких мощных ярлыков.
Любая помощь оценена! Благодаря !
Спасибо большое! Понял ! – Julien