javascript - Javascript - 如何从我用来查询数据库的承诺中将变量发送到我的前端?
问题描述
这是我使用的承诺。我也在使用 node-mssql 包。
const loadpictures = () => {
sql.connect(config).then(pool => {
return pool.request()
.query('SELECT Top 20 PhotoURL As src, PostURL As link from Valley_Photos FOR JSON PATH')
}).then((result) => {
//console.dir(result);
sql.close();
return result['result'].typeOf();
}).catch(err => {
console.log(err)
sql.close();
})
}
loadpictures()
.then(result => console.log(results))
.catch( err => ErrorHandler(err) );
我得到的错误是:
TypeError: Cannot read property 'then' of undefined
console.dir 输出所需的 json 对象。就是不知道怎么拔出来。我究竟做错了什么?
解决方案
then
未定义,因为您没有从函数返回承诺。如果您不需要使用sql.close()
,您可以简单地sql
从函数返回,因为它是一个返回承诺的函数,但既然这样做了,请将sql
调用包装在承诺中并解决/拒绝结果/错误。
function loadpictures() {
return new Promise((resolve, reject) => {
sql
.connect(config)
.then(pool => {
return pool.request().query(query)
})
.then(result => {
sql.close();
resolve(result['result'].typeOf());
})
.catch(err => {
sql.close();
reject(err);
});
});
}
loadpictures()
.then(result => console.log(result))
.catch(err => ErrorHandler(err));
推荐阅读
- c# - 我想从文件中检索数据
- javascript - 如何设置spherebuffergeometry的垂直角度?为什么旋转网格时轨道控制无法正常工作?
- google-api - 如何使用谷歌课堂 API 访问所有“分配”
- javascript - 选择框onchange时更新mysql表中的值
- android - 如何禁用BottomSheetDialogFragment在外部触摸时被解雇
- react-native - 从具有多个输入字段的动态页面中获取答案
- azure-devops - AzureDevOps `dotnet build` 项目路径的语法是什么?如何为 `dotnet build` 项目路径添加多个项目?
- android-studio - 当我尝试了官方文档中提到的所有内容时,如何将我在 Android Studio 中的颤振项目迁移到 Android X 兼容性。?
- linear-programming - 如何在 Pyomo 中为约束添加名称?
- java - Selenium webdriver中的sessionID如何在并行执行期间为每个浏览器实例获取不同的值