コンストラクタのクラスから新しいオブジェクトを作成していますが、実行するたびに、コンストラクタで定義されていても操作が定義されていないというエラーが発生します。操作自体は徹底的にテストされており、別の状況でうまく動作するので問題はありません。私は基本的な何かが欠けてるように感じている。これは、ノード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)
})
}
に直接それを実行しているない、バベルでそれを構築しています。とにかくこれは素晴らしいパターンではないと聞きましたので、より良い方法を提案してください。事前にありがとうございます。
更新:これは更新の使用方法です。
router.post("/", controller.update)
:私は別のモジュールから関数としてコントローラを輸入していたとき、それがうまく働いているように私は
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)'を入れて、コンストラクタに –