Javascript 将SQL查询传递到查询器提示符
我正在尝试拉入SQL查询结果,并在查询提示中填充选项。当控制台记录“选项”时,它显示调用的SQL查询中的对象数组,但当调用inquirer.prompt并用查询响应填充选项时,显示给用户的选项显示为“未定义”。我不完全确定发生了什么,因为我有一个几乎相同的函数,可以完美地工作Javascript 将SQL查询传递到查询器提示符,javascript,mysql,node.js,inquirerjs,Javascript,Mysql,Node.js,Inquirerjs,我正在尝试拉入SQL查询结果,并在查询提示中填充选项。当控制台记录“选项”时,它显示调用的SQL查询中的对象数组,但当调用inquirer.prompt并用查询响应填充选项时,显示给用户的选项显示为“未定义”。我不完全确定发生了什么,因为我有一个几乎相同的函数,可以完美地工作 const viewEmployeesByManager = async () => { const choices = await employeeDB_CRUD.getManagers(); co
const viewEmployeesByManager = async () => {
const choices = await employeeDB_CRUD.getManagers();
console.log(choices);
return new Promise( (resolve, reject) => {
inquirer.prompt([
{
name: "manager",
type: "list",
message: "Please select a department: ",
choices: choices
}
]).then( ({ manager }) => {
console.log(manager);
resolve();
});
});
}
根据关于的文件 类型为“list”的对象还必须使用带有选项的键值对和数组值。虽然choices variable console记录一个对象数组,但它实际上仍然是一个等待表达式,它会导致异步函数暂停,直到承诺得到满足/拒绝,并在满足后继续执行异步函数 根据“恢复时,等待表达的价值是履行承诺的价值。” 这表示您的选择变量将更改,因此最好实现let关键字,因为它表示变量可能会被重新分配,这将确保承诺得到履行
请尝试一下,告诉我它是否有效 我对inquirer一无所知,但是一个名为name的列被一个名为manager的提示符引用是否正确?@草莓是正确的,请正确传递
choices
array。数组值可以是简单的数字、字符串或包含名称的对象。看见
const getManagers = () => {
return new Promise((resolve, reject) => {
connection.query(`SELECT CONCAT(b.first_name, " ", b.last_name) AS Name
FROM employee a LEFT JOIN employee b
ON a.manager_id = b.id
WHERE a.manager_id IS NOT NULL;`, (err, res) => {
if (err) reject(err);
resolve(res);
});
});
}