gpt4 book ai didi

找不到 javascript 实例方法 : Object # has no method 'handleRequest'
转载 作者:搜寻专家 更新时间:2023-10-31 23:54:47 26 4
gpt4 key购买 nike

<分区>

以下代码有效:

Experimenters = function(db)
{
Object.apply(this, arguments);
this.db = db;
};
util.inherits(Experimenters, Object);


Experimenters.prototype.getAll = function(req, res)
{
return this.db.Experimenter.getAllExperimentersWithExperiments()
.then(function(exptrs) {
res.json(200, exptrs);
})
.catch(function(error) {
res.json(500, error);
});
};

但是我的每个请求处理程序的代码几乎都是一样的,所以我认为我可以通过创建一个通用的请求处理程序来减少重复代码:

Experimenters.prototype.handleRequest = function(promise, res)
{
return promise
.then(function(success){
res.json(200, success);
})
.catch(function(error) {
if (error instanceof dbErrors.NotFoundError) {
res.json(404, error);
} else if ((error instanceof dbErrors.ValidationError) ||
(error instanceof dbErrors.UniqueConstraintError)) {
res.json(422, error);
} else {
// unknown error
console.error(error);
res.json(500, error);
}
});
};

然后像这样修改我的请求处理程序:

Experimenters.prototype.getAll = function(req, res)
{
this.handleRequest(
this.db.Experimenter.getAllExperimentersWithExperiments(),
res);
};

但是我得到:

TypeError: Object #<Object> has no method 'handleRequest' 

代码是通过我的 routes/index.js 调用的

// edited for brevity
var Experimenters = require("../controllers/experimenters");

module.exports.initialize = function(app)
{
var exptrs = new Experimenters(app.db);

app.get("/api/experimenters", exptrs.getAll);
};

这是从我的 app.js 调用的:

 //edited for brevity
var config = require(path.join(__dirname, "..", "config")),
createDB = require(path.join(__dirname, "models")),
routes = require(path.join(__dirname, "routes"));

var db = createDB(config);
app.set("db", db);
// edited for brevity
routes.initialize(app);

26 4 0