首页 > 解决方案 > 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 对象。就是不知道怎么拔出来。我究竟做错了什么?

标签: javascriptsql-serverpromise

解决方案


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

推荐阅读