Javascript 无法读取未定义的对象
我正在对mongo集合进行查询,而我尝试访问的属性不可用,因为该对象显然未定义。我正在使用回调,所以我不确定它为什么尝试访问空对象Javascript 无法读取未定义的对象,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在对mongo集合进行查询,而我尝试访问的属性不可用,因为该对象显然未定义。我正在使用回调,所以我不确定它为什么尝试访问空对象 exports.checkPermissions = function(uname, pw){ var MongoClient = require('mongodb').MongoClient, format = require('util').format; console.log(uname + ", " + pw);
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(结果[0]。权限==“系统管理员”)
当找不到匹配的用户时,
results
将是一个0长度的数组,因此您的if
签入回调需要如下所示:
if( err || !results.length){
...
对于这种类型的查询,您可能应该使用
findOne
而不是find
,因为它更适合此用例,并且会生成更简单的代码。console.log(results)的输出是什么。
if( err || !results.length){
...