我一直在學習q的承諾,並試圖建立一些模擬API來實現其功能的forEach功能,而這樣做我碰到下面的錯誤來了,麻煩在使用Node.js的
Enterprise.forEach is not a function
我API代碼如下,
var mongoose = require('mongoose');
var Enterprise = mongoose.model('Enterprise_gpy');
var q = require('q');
var displayEnterprise = function(req, res) {
function displayEnterpriseName() {
var deferred = q.defer();
Enterprise.forEach(function(err, doc) {
if (err) {
console.log('Error Finding Files');
deferred.reject(err);
} else {
var name = Enterprise.enterprise_name;
deferred.resolve({
name: name
});
}
return deferred.promise;
});
}
function displayEnterpriseEmail() {
var deferred = q.defer();
Enterprise.forEach(function(err, doc) {
if (err) {
console.log('Error Finding Files');
deferred.reject(err);
} else {
var email = Enterprise.enterprise_email;
deferred.resolve({
email: email
});
}
return deferred.promise;
});
}
q.all([
displayEnterpriseName(),
displayEnterpriseEmail()
])
.then(function(success) {
console.log(500, success);
})
.fail(function(err) {
console.log(200, err);
});
}
module.exports = {
displayEnterprise: displayEnterprise
}
錯誤仍然存在,類型錯誤:Enterprise.find(...)的forEach不是一個函數 – Idlliofrio
以及它的工作原理,但只顯示第一個文件名和電子郵件,而不是列出整個文檔。企業集合中 – Idlliofrio
你的問題是'forEach'所以我出了這個問題。但是,如果你想返回*所有文檔名稱*然後*推入數組*並返回它。見更新答案:) @Idlliofrio –