>  Q&A  >  본문

Node.js에서 선택하기 전에 Inquirer가 종료됩니다.

인터로게이터를 사용하여 mysql 데이터베이스를 표시하고 궁극적으로 업데이트하는 명령줄 애플리케이션을 작성하려고 합니다. mysql 쉘을 사용할 때 내 데이터베이스 파일이 순서대로 있는 것처럼 보이지만 내 데이터베이스에 연결하고 쿼리기를 통해 조작하려고 하면 문제가 있는 것 같습니다.

지금까지는 올바른 데이터베이스에 연결되었음을 기록하고 메뉴 옵션을 표시한 다음 선택을 허용하지 않고 즉시 종료됩니다.

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일 전295

모든 응답(1)나는 대답할 것이다

  • P粉676588738

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

    msql 연결이 문제의 원인인 것 같습니다. 비밀번호를 입력하지 않아 충돌이 발생했습니다. 그러나 이는 비동기적으로 발생하므로 질문자 프롬프트는 어쨌든 표시되지만 선택하기 전에 앱이 중단됩니다

    회신하다
    0
  • 취소회신하다