zis*_*she 3 error-handling mongoose node.js coffeescript
我在mongoose docs中发现我可以处理我想要的错误.所以你可以这样做:
Product.on('error', handleError);
Run Code Online (Sandbox Code Playgroud)
但这种handleError方法的签名是什么?我想要这样的东西:
handleError = (err) ->
if err
console.log err
throw err
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
Node中的标准是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 } ] }
Run Code Online (Sandbox Code Playgroud)
所以现在到你的功能不起作用的部分; 你的代码究竟是如何读取的?这个名字handleError在任何方面都不特别; 你需要这两个中的一个:
选项1:定义函数,并将引用传递给事件注册:
handleError = (err) ->
console.log "Got an error", err
Product.on('error', handleError)
Run Code Online (Sandbox Code Playgroud)
选项2:定义内联函数:
Product.on 'error', (err) ->
console.log "Got an error", err
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4497 次 |
| 最近记录: |