angularjs 无法读取 属性 then of undefined
angularjs cannot read property then of undefined
我正在尝试 return 从我的服务器到客户端的 mongodb 集合,但是我得到 无法读取 属性 then of undefined 在服务器端控制器上。我知道承诺有问题,但似乎无法解决。需要更改哪些代码才能解决此问题?如果需要更多代码片段,请告诉我。
以下函数中的“.then(....)”出现错误。
course.controller.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 调用此函数:
course.service.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;
});
}
当您尝试对承诺应用 .then
函数时,承诺对象尚未从 getAll
函数中 return 编辑。从 getAll
函数中执行 return deferred.promise
对象将 return 承诺。
代码
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
}
You have that already returned promise, but that is not there in
correct place, take it out of .collection
function.
您需要将 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 从我的服务器到客户端的 mongodb 集合,但是我得到 无法读取 属性 then of undefined 在服务器端控制器上。我知道承诺有问题,但似乎无法解决。需要更改哪些代码才能解决此问题?如果需要更多代码片段,请告诉我。
以下函数中的“.then(....)”出现错误。
course.controller.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 调用此函数:
course.service.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;
});
}
当您尝试对承诺应用 .then
函数时,承诺对象尚未从 getAll
函数中 return 编辑。从 getAll
函数中执行 return deferred.promise
对象将 return 承诺。
代码
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
}
You have that already returned promise, but that is not there in correct place, take it out of
.collection
function.
您需要将 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;
}