猫鼬抛出错误 - 如何解决这个问题?

时间:2016-09-10 15:29:04

标签: node.js mongodb mongoose

在我的应用中,我使用describe 'validate factory' do let(:factory) { FactoryGirl.create :service } it 'sets the type_id field' do expect(service).to be_valid end end mongoose联系以发布数据。当我使用邮递员测试帖子时,我正在数据库中更新数据。但是控制台抛出了这个错误:

mlab

我根本无法理解这个错误。如何解决这个问题?我的代码在这里出了什么问题?

这里的参考是我正在使用的events.js:141 throw er; // Unhandled 'error' event ^ TypeError: Cannot read property 'code' of null at C:\Tutorials\try\NodePractical\MEAN-Family\app\routes\api.js:42:13 at C:\Tutorials\try\NodePractical\MEAN-Family\node_modules\mongoose\lib\model.js:3336:16 at C:\Tutorials\try\NodePractical\MEAN-Family\node_modules\mongoose\lib\document.js:1927:18 at nextTickCallbackWith0Args (node.js:420:9) at process._tickCallback (node.js:349:13) api:

post

2 个答案:

答案 0 :(得分:2)

因为每个节点回调都有此签名callback(error, response)

这意味着如果发生错误,第一个参数将包含错误,第二个参数将为null。但是如果没有错误发生,第一个参数将为null ,这意味着在这种情况下,您正在尝试访问空变量的属性.code

为防止这种情况,您可以先执行以下操作检查错误是否为空:

family.save(function(err, newFamily) {

    if (err) {
        if(err.code == 11000) {
            return res.json({ success: false, message: 'A user with that username already exists. '});
        }
        else {
            return res.send( err );
        }
    }

    res.json({ message: 'Family created!', newFamily: newFamily });

});

注意变化:

  • 第一行 - 我包含第二个参数,其中包含保存系列
  • 第二行 - 第一个条件检查err是否为空
  • 最后一行 - 我在回复中包含了newFamily,这是一个很好的做法。

答案 1 :(得分:0)

将此内容写入回调函数

                if (err && err.code == 11000) {
                    return res.json({ success: false, message: 'A user with that username already exists. '});
                }
                else if (err){
                    res.send( err );
                }else{

                res.json({ message: 'Family created!' });}