正在参数化 table name Node.js/mySQL?

Parametizing table name Node.js/mySQL?

所以我有三个 mySQL 数据库表,我需要能够向查询者添加记录。我不想编写三个单独的函数,而是只需要一个可以根据输入执行所有这三个函数的高效函数。

询问用户他们想做什么,switch/case 运行第一个函数,其中包含他们需要回答的一组询问者问题

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);
        });
}

但是当我到达这里时,我遇到了问题。显然表名不是员工??所以它不适用于 depts/roles。我需要一种方法来将其作为变量进行跟踪并进行传递,这样我就可以使表名也成为动态的,但我不确定该怎么做?

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

您可以将 table 名称作为参数添加到您的函数中

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);