запрос node.js не выполняется полностью и возвращается к основному блоку - PullRequest
0 голосов
/ 18 сентября 2018

Я новичок в node.js. Я пытаюсь использовать его для создания бота. Мне нужно выполнить запрос в функции (например, checkUser), а затем продолжить оставшуюся часть кода. но когда программа достигает функции после запроса, она не выполняет ее и возвращается к основному блоку. поэтому результат функции checkuser находится на рассмотрении, и я не могу его использовать !!

const SDK = require("balebot");
const BaleBot = SDK.BaleBot;
let bot = new BaleBot("5abf341d8924a1f41a00b08d3aebc205922f465b");

////connect to db
var sql = require('mssql');
var config = {
    user: 'adorfaki',
    password: '********',
    server: '192.168.44.89',
    database: 'MediatorData',
    port: 1433
};
var dbcon = new sql.ConnectionPool(config);
dbcon.connect().then(function () {
    var request = new sql.Request(dbcon);

    //start a conversation
    const Conversation = SDK.Conversation;
    let conv = new Conversation();
    bot.setConversation(conv);
    let tracer = conv.startsWith(['/start', 'start', 'Start', '/Start']);
    tracer.then((message, session, responder) => {
        responder.reply("Enter your user ID:");
        session.next();
    }).then((message, session, responder, ) => {
        if (message.text.length != 6) {
            responder.reply("User ID's length is incorrect!");
        } else {
            var UserID = ReturnUserID(message.text);
            var mIds = ReturnMessagesIds(UserID)
            for (var i = 1; i <= mIds.length; i++) {
                var Text = ReturnMessageText(i);
                responder.reply(text.MessageText);
            }

            async function ReturnUserID(Response) {
                try {
                    var result = await CheckUser(Response);
                    return true;
                } catch (error) {
                    responder.reply(error)
                };
            }

            async function ReturnMessagesIds(i) {
                try {
                    var result = await GetMessageIds(i);
                    return result;
                } catch (error) {
                    responder.reply(error)
                };
            }

            async function ReturnMessageText(MId) {
                try {
                    var result = await SelectMessageText(MId);
                    return result[0];
                } catch (error) { responder.reply(error) };

            }
        }

    });

    function CheckUser(Code) {
        return new Promise(function (resolve, reject) {
            request.query("select id from Recievers where UserCode=" + Code), then(function (Codes) {
                if (Codes.recordset.length != 0) {
                    resolve(Codes.recordset)
                } else {
                    reject("The User ID is incorrect!")
                }
            });
        });
    }

    function GetMessageIds(Uid) {
        return new Promise(function (resolve, reject) {
            request.query("select id from MessageSchedule where Userid=" + Uid).then(function (MessageIdList) {
                if (MessageIdList.recordset.length != 0) {
                    resolve(MessageIdList.recordset)
                } else {
                    reject("You don't have any message!")
                }
            });

        });

    }

    function SelectMessageText(index) {
        return new Promise(function (resolve, reject) {
            request.query("select MessageText from Messages m inner join MessageSchedule s on m.id=s.MessageID where s.id=" + [index]).then(function (texts) {
                if (texts.recordset.length != 0) {
                    resolve(texts.recordset)
                } else {
                    reject("Try Later!")
                }
            });

        });

    }
});
...