私はnode.js(およびjavascript)を使い慣れていません。アプリケーションの良い構造を得るためのチュートリアルに従っています。Node.js:アプリケーションを整理する:別々のファイルでルートとモデルを使用する、ルートからモデルを取得するにはどうすればよいですか?
まず、ルートを別のフォルダに入れたいと思っていました。
のは、これが私のmain.jsあるとしましょう:他人のファイルをロードするために使用index.jsと、user.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}`)
});
、私は2つのファイルを持っています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});
});
});
};
どのように私はアプリのVAR経由で私のモデルを使用することができますか?
注:私は、依存関係注入のための "config"というモジュールを備えたソリューションを見つけましたが、そのような強力なショートカットを使用する前に単純なコーディングを使用したいと思います。
ありがとう!
どうもありがとう!とった ! – Julien