如何解决将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 举报,一经查实,本站将立刻删除。