为了账号安全,请及时绑定邮箱和手机立即绑定

nodejs如何异步返回数据?

nodejs如何异步返回数据?

凤凰求蛊 2019-03-20 18:15:56
星号那一排会打印出undefined,search函数中该被return的数据是有我需要的数据的,页面也收不到数据,哪里除了问题啊?页面请求的数据格式是await axios    .get("/api/", {        params: {            type: "search",            searchtext: this.searchtext        }    })    .then(function(response) {        if (response.data.result == "success") {            // Do something        } else if (response.data.result == "safetytest") {            // Do something        }    })    .catch(function(error) {            // Do something    });服务器:// 监听路径app.get("/api/", function (req, res) {    var resdata = {};    // 查看是否为查询    switch (req.query["type"]) {        case "search":            search(req.query["searchtext"])            // ***************************************            .then(resdata => { console.log(resdata); res.json(resdata) })            .catch(e => { console.log });            break;        case "***":            // other            break;        default:            // other    }});async function search(searchtext) {    var resdata = {};    // 安全检查    if (safetytest(searchtext)) {        pool.getConnection(function (err, connection) {            if (err) throw err;            connection.query(                "SELECT * FROM `***` where ***=?",                searchtext,                function (err, result) {                    if (err) throw err;                    resdata = {                        uid: result[0].uid,                        aname: result[0].aname,                        lng: result[0].lng,                        lat: result[0].lat,                        address: result[0].address,                        telephone: result[0].telephone                    };                    return resdata;                }            );        });    }}
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

pool.getConnection跟connection.query如果没有promise/async写法的话,你就手动实现各promise吧。


function search(searchtext) {

    return new Promise((resolve, reject) => {

        var resdata = {};

        if (safetytest(searchtext)) {

            pool.getConnection(function (err, connection) {

                if (err) reject(err); // reject

                connection.query(

                    function (err, result) {

                        if (err) reject(err); // reject

                        resdata = {

                        };

                        resolve(resdata); // resolve

                    }

                );

            });

        }

    })

}

有的话可能就是这样了。


async function search(searchtext) {

    var resdata = {};

    // 安全检查

    if (safetytest(searchtext)) {

        try {

            const connection = await pool.getConnection()

            const resdata = await connection.query()

            return resdata

        } catch (err) {

            throw err

        }

    }

}


查看完整回答
反对 回复 2019-03-28
  • 1 回答
  • 0 关注
  • 806 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信