Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将SQL查询传递到查询器提示符_Javascript_Mysql_Node.js_Inquirerjs - Fatal编程技术网

Javascript 将SQL查询传递到查询器提示符

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

我正在尝试拉入SQL查询结果,并在查询提示中填充选项。当控制台记录“选项”时,它显示调用的SQL查询中的对象数组,但当调用inquirer.prompt并用查询响应填充选项时,显示给用户的选项显示为“未定义”。我不完全确定发生了什么,因为我有一个几乎相同的函数,可以完美地工作

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