正在参数化 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);
所以我有三个 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);