为什么我的nodejs函数返回未定义?

时间:2020-07-10 15:10:39

标签: node.js express

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时,我得到了返回值

1 个答案:

答案 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 });
});