Я пытаюсь структурировать ответ json с помощью nodejs restapi, но мой ответ всегда отправляется раньше, даже если функция не была выполнена.
Я пытался ждать с обещанием, что ничего не работает, и отправить ошибку ..
// это моя желаемая структура для json
[
{
"user_id": "2",
"user_name": "Mehedi Hasan",
"permissions": [
{
"table_name": "questionbank",
"permission_create": "true",
"permission_update": "true",
"permission_delete": "true"
},
{
"table_name": "questionbankquestions",
"permission_create": "true",
"permission_update": "true",
"permission_delete": "true"
},
{
"table_name": "subjects",
"permission_create": "false",
"permission_update": "true",
"permission_delete": "false"
},
{
"table_name": "subjectquestions",
"permission_create": "true",
"permission_update": "true",
"permission_delete": "true"
},
{
"table_name": "modeltests",
"permission_create": "true",
"permission_update": "true",
"permission_delete": "true"
},
{
"table_name": "modeltestquestions",
"permission_create": "true",
"permission_update": "true",
"permission_delete": "true"
}
]
},
............................
]
// это то, что я пытался
function getAllUser(done) {
var sql = "SELECT users.id, users.username FROM users";
db.query(sql, [], function(err, rows, fields) {
if (err) throw err;
done(rows);
});
}
/*--------------------------Check user permission --------------------------*/
router.get("/adminpermissions", function(req, res) {
var sql =
"SELECT table_name, permission_create, permission_update, permission_delete FROM permissions " +
"WHERE user_id = ?";
finalArray = [];
jsonFormat = [];
permissionArray = [];
getAllUser(function(user) {
for (var i = 0; i < user.length; i++) {
userId = user[i].id;
userName = user[i].username;
db.query(sql, [userId], function(err, rows, fields) {
if (err) {
res.status(500).send({ error: "Something failed!" });
}
console.log(rows);
permissionArray[i] = rows;
var data = {
user_id: userId,
user_name: userName,
permission: permissionArray[i]
};
jsonFormat.push(data);
});
}
res.json(jsonFormat);
});
});
Я всегда получаю [] массив в качестве ответа ... хотя я знаю проблему, что ответ отправляется, хотя цикл еще не закончен, но не знаю, как решить .. пытался ждать с обещаниемно в конечном итоге с таким количеством сообщений об ошибках ..