【发布时间】:2013-09-24 19:11:50
【问题描述】:
这里是示例代码,两个文件和“类”。
具有已定义方法的 CRUD 类,this.modelName 出现问题,因为我设置了 this 上下文随此代码更改的路由:
问题是如何在定义模型名称的 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;
【问题讨论】:
-
问题是什么?
-
我无法重现您的错误。
console.log(this);按预期工作。为什么不呢?除非您使用userRoutes.list作为处理程序? -
@freakish 我认为他的评论写错了,应该往下两行
-
@jcollum 是的,我已经意识到了,忘记删除评论了。 :)
-
我希望 SO 对评论编辑/删除不是那么激进。
标签: javascript node.js oop