Я создаю новый объект из класса в конструкторе, и всякий раз, когда он запускается, я получаю сообщение об ошибке, которое не определено в методе, хотя оно определено в конструкторе. Operate сам по себе тщательно протестирован и отлично работает в отдельном контексте, так что это не проблема. Я создаю его с помощью Babel, не запускаю его непосредственно в Node 7.0.0.
import Operate from "./operate"
export default class {
constructor(Schema) {
this.schema = Schema
this.operate = new Operate(this.schema)
console.log(this.operate.run) // <- Logs just fine
}
update(req, res) {
console.log(this.operate.run) // <- Nada
this.operate.run(req.body)
.then(value => {
res.status(200).json(value)
})
}
Такое ощущение, что я упускаю что-то фундаментальное. Я слышал, что это не самый лучший шаблон, поэтому, пожалуйста, не стесняйтесь предлагать лучший способ. Большое спасибо заранее.
ОБНОВЛЕНИЕ: Вот как используется обновление. Я не подозреваю, что здесь есть какая-то проблема, так как он отлично работал, когда я импортировал контроллер как функцию из другого модуля, а не класса.
import {Router, } from "express"
import Controller from "../controller"
import User from "./user.model"
let controller = new Controller(User)
let router = new Router()
router.post("/", controller.update)
module.exports = router
this
в вызове обновления, возможно, не определено? попробуйтеconsole.log(this)
вверху обновления, чтобы увидеть, что это такое - person Jaromanda X   schedule 23.01.2017constructor
попробуйте добавитьthis.update = this.update.bind(this)
. - person Saad   schedule 23.01.2017this.update = this.update.bind(this);
- теперь это имеет смысл :p - person Jaromanda X   schedule 23.01.2017I have to do that with all of the methods?
- только те, которые нужны - person Jaromanda X   schedule 23.01.2017