首頁  >  問答  >  主體

Node.js中,Inquirer在我做出選擇之前退出

我正在嘗試編寫一個命令列應用程序,它使用詢問器來顯示並最終更新 mysql 資料庫。當我使用 mysql shell 時,我的資料庫檔案似乎是有序的,但是當我嘗試連接到我的資料庫並透過查詢器操作它時,我似乎遇到了問題。

到目前為止,它將記錄它已連接到正確的資料庫,顯示選單選項,然後立即退出,不允許我做出選擇。

如果我註解掉 const connect 程式碼區塊,那麼查詢器將不會退出並允許我進行選擇,但隨後應用程式會因為沒有連接資料庫而中斷。

預先感謝您的任何見解

我目前的程式碼:

require('console.table');
const inquirer = require ('inquirer');
const mysql = require ('mysql2');

const connect = mysql.createConnection(
    {
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'employeeDB'
    },
    console.log('Connected to employeeDB')
);

function init(){
    menu();
};

async function menu(){
    await inquirer.prompt([
            {
                type: "list",
                name: "userChoice",
                message:"Menu:",
                choices: [
                    "View All Departments",
                    "View All Roles",
                    "View All Employees"
                ]
            },
        ])
        .then(({userChoice}) => {
            if (userChoice === "View All Departments"){
                viewDepartment()
            } else if (role === "View All Roles") {
                viewRole()
            } else {
                viewEmployee()
            }
        })
}

const viewDepartment = () => {
    connect.query(
        'SELECT * FROM department;',
        (err, results) => {
            console.table(results);
            menu();
        }
    )
};

const viewRole = () => {
    connect.query(
        'SELECT * FROM role;',
        (err, results) => {
            console.table(results);
            menu();
        }
    )
};

const viewEmployee = () => {
    connect.query(
        'SELECT * FROM employee;',
        (err, results) => {
            console.table(results);
            menu();
        }
    )
};

init();

P粉947296325P粉947296325259 天前294

全部回覆(1)我來回復

  • P粉676588738

    P粉6765887382024-02-04 00:00:54

    我認為您的 msql 連接導致了問題。您沒有輸入密碼,因此導致當機。但它是非同步發生的,因此無論如何都會出現詢問者提示,但在您做出選擇之前您的應用程式會崩潰

    回覆
    0
  • 取消回覆