Я использую REST API, используя узел с hapijs. Итак, я должен использовать наследования, и у меня нет успеха в доступе к функциям отца. У меня есть это:Node.js наследует
controller.js
var __ = require('underscore');
var Controller = function(){
var Validator = require('../validators/'+this.controller);
Controller.prototype.validate = new Validator();
}
Controller.prototype.returnErrors = function(err){
var errors = [];
__.each(err, function(error){
errors.push(error.message);
});
return errors;
}
module.exports = Controller;
reckon.js
var __ = require('underscore'),
reckon = require('../components/reckon'),
inherits = require('util').inherits,
Controller = require('./controller'),
Reckon = require('../models/reckon').Reckon;
var ReckonCtr = function() {
this.controller = "reckon";
ReckonCtr.super_.call(this);
}
inherits(ReckonCtr, Controller);
ReckonCtr.prototype.get = function (request, reply, server, callback) {
this.validate.get(__.extend({company:request.params.company}, request.query), function(validation, value){
if(validation.error){
return callback(this.returnErrors(validation.error.details));
}
reckon.getReckon(request.params.company, request.query, function(error, success){
if(error) return callback(error);
return callback(null, success);
});
});
}
module.exports = new ReckonCtr();
Почему я могу получить доступ к "this.validate" и не может "this.returnErrors"? (TypeError: Uncaught error: Объект # не имеет метода 'returnErrors').
А как насчет возврата моего возврата?
Заранее благодарен
А как насчет поворота «частной» моей функции возврата? Добавить символ подчеркивания и заблокировать доступ к функциям «_» в файле маршрутов? –
@PopoKakedo Вы имеете в виду сделать 'returnErrors' доступным только из' ReckonCtr'? Есть много способов сделать это, если вы можете предоставить немного больше контекста, я мог бы, вероятно, дать вам лучший ответ. – James