NodeJS 与 MySQL - 返回空白数组
Posted
技术标签:
【中文标题】NodeJS 与 MySQL - 返回空白数组【英文标题】:NodeJS with MySQL - Return blank Array 【发布时间】:2021-11-18 23:31:44 【问题描述】:我已经初始化了一个数组“userTasklist”。我已经在 .map 函数中推送了这个数组中的对象。 .map 之后,我有控制台这个数组,但数组是空白的。
比我在 .map 函数中控制对象并且所有值都打印成功,但在 Array 中没有值。不知道为什么。
exports.allUserList = (req, res) =>
let userID = req.params.userid;
const ghusersQuery = "SELECT user_id, name, employee_code FROM users WHERE under_gh = ?";
conn.query(ghusersQuery, [userID], (err, userdata) =>
if (err)
res.send( message: err )
else
if (userdata && userdata.length > 0)
let userTasklist = [];
userdata.map((datauser) =>
var objtask = ;
const userDataQuery = "SELECT * FROM tasklist WHERE user_id = ?";
conn.query(userDataQuery, [datauser.user_id], (errnew, taskdata) =>
if (taskdata && taskdata.length > 0)
objtask =
userid: datauser.user_id,
tasklist: taskdata
userTasklist.push(objtask);
)
)
console.log(userTasklist)
res.send( message: "user list fetched", userdata: userdata, tasklistdata: userTasklist )
else
res.send( message: "Data not found!" )
)
【问题讨论】:
userTasklist 在调用查询回调之前发送为空。我建议将运行查询用作Promise,这样您就可以await。 你能详细解释一下吗。我是NodeJS的新手 问题是,userDataQuery的函数是在userTasklist之后调用的。在avoiding this so called callback hell 上查看这篇文章:-) 【参考方案1】:使用 mysql21 将查询作为 Promise 处理的简化解决方案。
exports.allUserList = async (req, res) =>
const userid = req.params
const users = await connection.query('SELECT user_id, name, employee_code FROM users WHERE under_gh = ?', [userid])
if (!users.length)
return res.send( message: "Data not found!" )
// better fetch all relevant tasks in bulk
const tasks = await connection.query('SELECT * FROM tasklist WHERE user_id IN (?)', [users.map(r => r.user_id)])
res.send( message: "user list fetched", users, tasks )
【讨论】:
如果我需要批量数据,那么我的代码在没有异步和等待的情况下工作正常。我需要单独的数组中的数据。 你能展示一个预期结果的样本吗?您可以在应用程序中重新组织输出,但我通常会避免在循环中调用查询(例如 200 个用户的 200 个查询),因为这可能会导致一些严重的开销。 我在用户表中有组长和团队成员。团队成员每天 3 次添加任务列表 @12PM、3PM 和 6PM。现在组长看到最近 7 天的团队成员任务列表......所以我想先循环 7 天日期并列出在表格顶部,然后我想在下面显示 12PM、3PM 和 6PM 时间日期和之后我想在以上是关于NodeJS 与 MySQL - 返回空白数组的主要内容,如果未能解决你的问题,请参考以下文章