我没有错误,但它没有将features
json对象添加到results
json对象
代码:
exports.getApps = function() {
return new Promise(function(resolve, reject) {
db.raw(`
SELECT *
FROM APPs
WHERE VARAPP_PUBLIC_ACTIVE > 0
ORDER BY VARAPP_PUBLIC_ACTIVE ASC, VARAPP_NAME ASC
`).then(function(results) {
if (results[0].length > 0) {
for (var i = 0; i < results[0].length; i++) {
elaborate(i, results, reject);
}
resolve({
apps: results[0]
})
} else {
resolve({
error: 'No Apps Found'
})
}
}).catch(function(err) {
console.error(err);
reject(err);
});
})
function elaborate(i, results, reject) {
db.raw(`
SELECT *
FROM APPs_Features
WHERE VARAPP_ID = ?
ORDER BY VARAPP_ORDER ASC
`, [results[0][i].VARAPP_ID], i)
.then(function(features) {
if (features[0].length > 0) {
results[0][i].Features = features[0];
} else {
results[0][i].Features = null;
}
}).catch(function(err) {
console.error(err);
reject(err);
});
}
}
如果i console.log(results[i)
在.then()
函数的elaborate()
内的条件语句之后,我得到带有.features的结果json对象,但是如果我console.log(results[0]
正确的话在resolve()
消失之前
答案 0 :(得分:0)
elaborate
中的此数据库调用是异步的吗?
db.raw(`
SELECT *
FROM APPs_Features
WHERE VARAPP_ID = ?
ORDER BY VARAPP_ORDER ASC
`, [results[0][i].VARAPP_ID], i)
这意味着您在添加功能之前正在解决问题。在调用resolve({ apps: results[0] })