これがサンプルコード、2 つのファイルと「クラス」です。
メソッドが定義された CRUD クラスでは、このコンテキストが次のコードで変更されるルートを設定すると、this.modelName で問題が発生します。
問題は、 modelName を定義した CRUD の下で同じスコープを取得する方法です。
server.get('/users/:id', UserRoutes.find);
コード:
var db = require('../models');
function CRUD(modelName) {
this.modelName = modelName;
this.db = db;
}
CRUD.prototype = {
ping: function (req, res, next) {
res.json(200, { works: 1 });
},
list: function (req, res, next) {
// FAILS BECAUSE the modelName is undefined
console.log(this);
db[this.modelName].findAll()
.success(function (object) {
res.json(200, object);
})
.fail(function (error) {
res.json(500, { msg: error });
});
}
};
module.exports = CRUD;
UserRoutes クラス:
var CRUD = require('../utils/CRUD'),
util = require('util');
var UserModel = function() {
UserModel.super_.apply(this, arguments);
};
util.inherits(UserModel, CRUD);
var userRoutes = new UserModel('User');
module.exports = userRoutes;