私が最初にすることは、単一責任の原則などを呼び出すことによって、物事を単純化し、結合を減らすことです.
http://www.codinghorror.com/blog/2007/03/curlys-law-do-one-thing.html
それらのスキーマを独自のファイルに入れます。
models/client.js
models/assistant.js
models/contact.js
また、埋め込みドキュメント + マングースは一般的に PITA であることがわかりました。私はおそらくそれらすべてをトップレベルのドキュメントに昇格させます。
オブジェクトのキーを引用符で囲む必要はありません。
routes = {
list: function() {} // no quotes is aok
}
また、一般的な REST アプリの「リスト」は「インデックス」と呼ばれます。ともかく。
わかりました、私はこれを別の方法で分割します。ミドルウェアで index.js ファイルからのものを要求しているため、それらは密結合になり、これは悪いことです。実際、私はこの全体を書き直して、より整然としたものにしたいと思います。ごめん。
おそらく、「ミドルウェア」ファイルをエクスプレスリソースコントローラーhttps://github.com/visionmedia/express-resource(エクスプレスの作成者によって構築された)に置き換えます
。これは、作成中のものなど、安らかなコントローラーに適したフレームワークです。オートローダーは本当に便利です。
http://mcavage.github.com/node-restify/も参照してください。これは新しいもので、まだ試していませんが、良いことを聞いています。
あなたが構築しているのは基本的に自動化されたマングースクラッドシステムであるため、オプションのオーバーライドを使用して、ベースとしてエクスプレスリソースコントローラーを作成します
/controllers/base_controller.js
そしてそれは次のように見えるかもしれません
var BaseController = function() {} // BaseController constructor
BaseController.prototype.index = function() {
// copy from your middleware
}
BaseController.prototype.show = function() {
// copy from your middleware
}
BaseController.prototype.create = function() {
// copy from your middleware
}
// etc
module.exports = BaseController
次に、次のようにします。
/controllers/some_resource_controller.js
次のようになります。
var BaseController = require('./base_controller')
var NewResourceController = function() {
// Apply BaseController constructor (i.e. call super())
BaseController.apply(this, arguments)
}
NewResourceController.prototype = new Base()
NewResourceController.prototype.create = function() {
// custom create method goes here
}
module.exports = NewResourceController
それを使用するには、次のようにします。
var user = app.resource(myResourceName, new ResourceController());
myResourceName
…設定しようとしているクラッドに設定されるいくつかのループ内。
ここにあなたが読むためのいくつかのリンクがあります:
また、テストを書いていないようです。テストを書きます。