Javascript angularjs无法读取未定义的属性

Javascript angularjs无法读取未定义的属性,javascript,angularjs,mongodb,promise,deferred,Javascript,Angularjs,Mongodb,Promise,Deferred,我正试图将mongodb集合从服务器返回到客户端,但在服务器端控制器上获得了undefined的属性。我知道承诺有问题,但似乎无法解决。需要哪些代码更改来修复此问题?如果需要更多的代码片段,请告诉我 错误发生在以下函数中的“.then(..”)上 课程控制器.js function getAll(req,res){ CourseService.getAll() .then(function(result){ if(result){

我正试图将mongodb集合从服务器返回到客户端,但在服务器端控制器上获得了undefined的属性。我知道承诺有问题,但似乎无法解决。需要哪些代码更改来修复此问题?如果需要更多的代码片段,请告诉我

错误发生在以下函数中的“.then(..”)上

课程控制器.js

function getAll(req,res){
    CourseService.getAll()
        .then(function(result){
            if(result){
                res.send(result);
            }else{
                res.sendStatus(404);
            }
        })
        .catch(function(err){
            res.status(400).send(err);
        });
}
CourseService调用此函数:

课程服务.js

function getAll(){
    console.log('services/course.service  getALL');
    var deferred = Q.defer();

    db.collection('courses').find().toArray(function(err, result) {
        if (err) deferred.reject(err);
        console.log(result);
        deferred.resolve();
        return deferred.promise;
    });   
}

当您尝试应用
。时,
函数覆盖一个promise,但promise对象尚未从
getAll
函数返回。确实返回
延迟。来自
getAll
函数的promise
对象将返回promise

代码

function getAll(){
    console.log('services/course.service  getALL');
    var deferred = Q.defer(); //assuming `Q` is `$q` dependency instance

    db.collection('courses').find().toArray(function(err, result) {
        if (err) deferred.reject(err);
        console.log(result);
        deferred.resolve();
    });   
    return deferred.promise; //return promise from here
}
你已经回报了承诺,但那不是你的承诺 正确的位置,将其从
.collection
功能中取出


当您尝试应用
。时,
函数覆盖一个promise,但promise对象尚未从
getAll
函数返回。确实返回
延迟。来自
getAll
函数的promise
对象将返回promise

代码

function getAll(){
    console.log('services/course.service  getALL');
    var deferred = Q.defer(); //assuming `Q` is `$q` dependency instance

    db.collection('courses').find().toArray(function(err, result) {
        if (err) deferred.reject(err);
        console.log(result);
        deferred.resolve();
    });   
    return deferred.promise; //return promise from here
}
你已经回报了承诺,但那不是你的承诺 正确的位置,将其从
.collection
功能中取出


您需要将return语句移到外部:

function getAll(){
    console.log('services/course.service  getALL');
    var deferred = Q.defer();

    db.collection('courses').find().toArray(function(err, result) {
        if (err) deferred.reject(err);
        console.log(result);
        deferred.resolve();
    });   

    return deferred.promise;
}

您需要将return语句移到外部:

function getAll(){
    console.log('services/course.service  getALL');
    var deferred = Q.defer();

    db.collection('courses').find().toArray(function(err, result) {
        if (err) deferred.reject(err);
        console.log(result);
        deferred.resolve();
    });   

    return deferred.promise;
}