在我的应用中,我使用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
答案 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!' });}