1
我正在重構我的nodejs應用程序,並試圖使代碼看起來更乾淨,然後在直接調用函數時遇到此問題。爲什麼nodejs函數參數在顯式調用時行爲不同?
這個工程:
router.route('/').get(({ query }, res, next) => {
ItemsLogic.getItems(query)
.then((items) => res.json(items))
.catch(next)
})
但是,這將引發錯誤:
router.route('/').get(({ query }, res, next) => {
ItemsLogic.getItems(query)
.then(res.json)
.catch(next)
})
的錯誤是:「無法讀取屬性 '應用' 的未定義」。它在快速響應的json()
函數內部,並且與該方法中的this
對象有關,該對象由於某種原因未定義。
@abhishekkannojia - 你不能傳遞「語句」(除非你把它們放在字符串中以成爲'eval'ed)。 'res.json'的值是一個函數。 – Quentin
@Quentin是的,你是對的。沒有意識到'res.json'是一個函數。我想這就是當你沒有正確地通過代碼時會發生什麼。感謝澄清。 – abhishekkannojia
爲了使這項工作,只要通過:.then(res.json.bind(res)) – binariedMe