1

所以我有三个 mySQL 数据库表,我需要能够从查询器中添加记录。与其编写三个单独的函数,我只想拥有一个可以根据输入完成所有三个函数的高效函数。

用户被问到他们想做什么,并且开关/案例运行第一个功能,其中包含他们需要回答的一组询问者问题

switch (response.toAdd) {
                case "New Employee":
                    return addACME(empQ);
                case "New Department":
                    return addACME(deptQ);
                case "New Role":
                    return addACME(roleQ);

第一个函数需要一组必要的问题,让用户回答它们,然后运行第二个函数

const addACME = (choice) => {
    return inquirer.prompt(choice)
        .then(response => {
            addToDB(response);
        });
}

但是当我到达这里时,我遇到了问题。显然表名不是员工??所以它不适用于部门/角色。我需要一种方法来跟踪它作为一个变量并通过它,以便我可以使表名也动态,但我不知道我会怎么做?

const addToDB = acmeRecord => {
    connection.query("INSERT INTO employees SET ?", acmeRecord, (err, results) => {
        if (err) throw err;
        mainMenu();
    })
}
4

1 回答 1

0

您可以将表名作为参数添加到函数中

const addToDB = (tablename, record) => {
    connection.query(`INSERT INTO ${tablename} SET ?`, record, (err, results) => {
        if (err) throw err;
        mainMenu();
    })
}

然后这样称呼它

switch (response.toAdd) {
                case "New Employee":
                    return addACME("employees", empQ);
                case "New Department":
                    return addACME("<department_table_name>", deptQ);
                case "New Role":
                    return addACME("<role_table_name>", roleQ);
于 2020-08-21T17:30:30.077 回答