微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将SQL查询传递到查询提示

如何解决将SQL查询传递到查询提示

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

view.setNeedsLayout()
view.layoutIfNeeded()
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();
        });
    });
}

解决方法

遵循Inquirer上的文档,

类型为“列表”的对象还必须使用带有选择项和数组值的键值对。虽然choices变量控制台记录了一个对象数组,但实际上它仍然是一个await表达式,这会导致您的异步函数暂停直到Promise被实现/被拒绝,并在实现后恢复执行异步函数。

根据MozdDocs on the await keyword,“恢复后,等待表达式的值就是已实现的Promise的值。”

这表明您的 choices变量将更改,因此最好实施 let 关键字,因为它表明该变量可能重新分配,这将兑现诺言。

请尝试一下,然后告诉我是否可行!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。