我从MySQL获取数据并将其推送到新的Array中,但是在我记录时将其推送。它没有任何数据。我使用for循环从数据库获取每个数据,但我不知道如何将RowDataPacket推入新的Array。
或者有什么方法可以将两个SQL合并到一条SQL行中?
router.get(`/find-users/:queryString`, function(req, res, next) {
let queryString = req.params.queryString;
db.query(
`SELECT distinct userId from project WHERE keyword like "%${queryString}%"`,
function(error, data) {
if (error) {
console.log(error);
}
// console.log(data);
let userArray = [];
for (let i = 0; i < data.length; i++) {
db.query(
`SELECT * FROM user WHERE loginId='${data[i].userId}'`,
function(error, userData) {
if (error) {
console.log(error);
} else {
console.log("-----------------------");
console.log(userData[0]);
// userArray[i] = userData;
userArray.push(userData[0]);
}
}
);
}
console.log(`-------`);
console.log(userArray);
console.log(`-------`);
}
);
});
我必须像这样制作数组。
[ RowDataPacket {
loginId: '박동찬',
displayId: '107688875506148574770',
name: '박동찬',
bio: 'NO BIO',
RowDataPacket {
loginId: 'jaagupkymmel',
displayId: '1156051',
name: 'Jaagup Kümmel',
bio: 'NO BIO' }
]
但是它只会这样返回
结果
-------
[]
-------
答案 0 :(得分:1)
const {promisify} = require('util')
router.get(`/find-users/:queryString`, async function (req, res, next) {
const query = promisify(db.query).bind(db);
let queryString = req.params.queryString;
const data = await query(`SELECT distinct userId from project WHERE keyword like "%${queryString}%"`)
if (!data) {
console.log("error");
}
// console.log(data);
let userArray = [];
for (let i = 0; i < data.length; i++) {
const userData = await query(`SELECT * FROM user WHERE loginId='${data[i].userId}'`)
if (!userData) {
console.log("error");
} else {
console.log("-----------------------");
console.log(userData[0]);
// userArray[i] = userData;
userArray.push(userData[0]);
}
}
console.log(`-------`);
console.log(userArray);
console.log(`-------`);
});
答案 1 :(得分:0)
改为使用此
function(error, userData, fields)
,您将得到一个如此处https://www.w3schools.com/nodejs/nodejs_mysql_select.asp
所示的数组请阅读sql注入和node.js Preventing SQL injection in Node.js
答案 2 :(得分:0)
除了上述答案,
[{
RowDataPacket: {
loginId: '박동찬',
displayId: '107688875506148574770',
name: '박동찬',
bio: 'NO BIO',
RowDataPacket: {
loginId: 'jaagupkymmel',
displayId: '1156051',
name: 'Jaagup Kümmel',
bio: 'NO BIO' }
}
}]
json应该是键值对,否则将无法工作。