function getUserByStudentId(NIM) {
db.query('SELECT * FROM data_admin WHERE id_mahasiswa = ?', [NIM], async (err, result) => {
if (!result) {
return null
} else {
var data = await {
id: result[0].id_Admin,
email: result[0].email,
jabatan: result[0].jabatan,
password: result[0].password,
id_mahasiswa: result[0].id_mahasiswa,
id_Acara: result[0].id_Acara,
id_Organisasi: result[0].id_Organisasi
}
console.log(data) // there is a value here
return data
}
})
}
console.log(getUserByStudentId('1301194051')) // undefined returned
我是一名学生,开始学习nodejs。您能给我解释一下,为什么我的函数返回未定义
console.log(getUserByStudentId('1301194051')) // undefined
但是当我在函数上进行console.log时,我得到了返回值
答案 0 :(得分:0)
我将为您介绍该功能:
function getUserByStudentId(NIM) {
return new Promise(function(resolve, reject) => {
db.query('SELECT * FROM data_admin WHERE id_mahasiswa = ?', [NIM], (err, result) => {
if (!result) {
resolve(null);
} else {
var data = {
id: result[0].id_Admin,
email: result[0].email,
jabatan: result[0].jabatan,
password: result[0].password,
id_mahasiswa: result[0].id_mahasiswa,
id_Acara: result[0].id_Acara,
id_Organisasi: result[0].id_Organisasi
}
console.log(data) // there is a value here
resolve(data);
}
});
});
}
如果要在全局范围内使用此功能,请使用then
:
getUserByStudentId('1301194051').then(result => {
console.log(result);
});
如果要在异步函数中使用此函数,可以等待结果:
async function doSomethingWithUser(NIM) {
const user = await getUserByStudentId(NIM);
}
例如,如果您使用快递:
app.get('/user/:id', async (res, req) => {
const NIM = req.param.id;
const user = await getUserByStudentId(NIM);
res.json({ user });
});