无法读取未定义的对象
Undefined object cannot be read
我正在查询一个 mongo 集合,我尝试访问的属性不可用,因为该对象显然未定义。我正在使用回调,所以我不确定为什么它试图访问空对象?
exports.checkPermissions = function(uname, pw){
var MongoClient = require('mongodb').MongoClient,
format = require('util').format;
console.log(uname + ", " + pw);
MongoClient.connect('mongodb://localhost/users', function(err, udb) {
if(err) throw err;
var targetcol = udb.collection('profiles');
targetcol.find({username: uname, password: pw}, {permissions: 1}).toArray(function(err, results) {
if( err || !results){
console.log("error occured");
response.redirect('/');
}
else {
if (results[0].permissions == 'system admin'){
response.redirect('/adminDashboard');
}
else
response.redirect('/userDashboard');
}
udb.close();
});
});
}
我收到错误的部分是:
if (results[0].permissions == 'system admin')
events.js:72
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'permissions' of undefined
当找不到匹配的用户时,results
将是一个长度为 0 的数组,因此您的if
在回调中的签入需要如下所示:
if( err || !results.length){
...
对于这种类型的查询,您可能应该使用 findOne
而不是 find
,因为它更适合此用例,并且会产生更简单的代码。
相关文章:
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- JavaScript 对象 - 未定义的数字键文字
- 为什么页面方法对象未定义
- JavaScript对象表示嵌套对象未定义
- Javascript类构造的对象未定义
- JQuery TypeError:对象未定义(length=object.length,)
- 用于从许多带有“for”循环的URL中获取HTML信息的X射线使对象未定义
- 如何避免收到一条消息,指出对象未定义
- JavaScript 对象未定义
- JavaScript 对象未定义它是否在几年前工作
- 揭示模块模式:对象未定义
- 对象未定义/HTML使用jQuery输出
- 为什么子 html 对象未定义/空
- 提取 JSON 对象未定义
- 为什么这个带有最简单的构造函数的 javascript 对象未定义
- “对象”未定义日历.js
- 对象未定义到模块中,Nodejs javascript
- javascript对象未定义
- Twilio响应对象未定义,但没有错误
- 为什么"对象未定义”;在这种情况下没有抛出错误