它是標準的節點爲error
事件提供一個參數,這是錯誤本身。根據我的經驗,即使只有少數提供附加參數的庫始終將錯誤作爲第一項,以便您可以使用帶簽名function(err)
的函數。
您也可以在GitHub上查看源代碼;這裏的預先保存鉤發出的error
事件,與錯誤作爲參數,當出現出錯:https://github.com/LearnBoost/mongoose/blob/cd8e0ab/lib/document.js#L1140
還有在JavaScript中一個非常簡單的方法,看看傳遞給函數的所有參數:
f = ->
console.log(arguments)
f() # {}
f(1, "two", {num: 3}) # { '0': 1, '1': 'two', '2': { num: 3 } }
f([1, "two", {num: 3}]) # { '0': [ 1, 'two', { num: 3 } ] }
所以,現在到你的功能無法正常工作的一部分;你的代碼如何讀取?名字handleError
並不是什麼特別的;您需要之一這兩個:
選項1:定義該函數,並傳遞一個參考到的事件登記:
handleError = (err) ->
console.log "Got an error", err
Product.on('error', handleError)
選項2:定義該函數內聯:
Product.on 'error', (err) ->
console.log "Got an error", err
我這樣做,但是當發生錯誤時,我在控制檯中看不到我的消息。 – zishe
可能值得注意的是,如果你定義了一個回調函數,那麼處理程序將不會運行,所以如果你使用Product.save(function(err,doc){})',那麼你可以自己處理錯誤。 – numbers1311407