我有控制器和模型文件。我想将承诺的响应从模型返回到控制器。响应我的模型函数 conole.log(response)
给我我的结果,但我无法将其发送回控制器函数。
我的控制器功能是
let filters;
for(var i = 0; i < 10; i++){
filters = await ModelFile.getProductOptions(i);
console.log(filters); // undefined
}
我的模型函数是
getProductOptions = (product_id) => {
connection.query(query1,function(err,rows) {
var response = [];
//doing something with rows
Promise.all(rows.map(function(item) {
var promise = new Promise(function(resolve,reject) {
connection.query(queryItem,function(err,rows) {
//doing something
result = rows[0].field;
//and want to push it to an array
resolve(result);
});
});
return promise.then(function(result) {
console.log(result); //ok
response.push(result) //ok
});
}).then(function () {
console.log(response); //ok console is showing the response but when return response it gives undefined in controller function
});
});
}
答案 0 :(得分:-1)
getProductOptions = (product_id) => {
connection.query(query1,function(err,rows) {
var response = [];
//doing something with rows
Promise.all(rows.map(function(item) {
var promise = new Promise(function(resolve,reject) {
connection.query(queryItem,function(err,rows) {
//doing something
result = rows[0].field;
//and want to push it to an array
resolve(result);
});
});
return promise.then(function(result) {
console.log(result); //ok
response.push(result) //ok
});
}).then(function () {
return response;
});
});
}
在控制器中试试这个:
let filters;
for(var i = 0; i < 10; i++){
ModelFile.getResult(i).then(res => {
console.log(res);
filters = res;
});
console.log(filters);
}