javascript - 带参数和回调的 Nodejs 函数不起作用

标签 javascript mysql callback nodejs-server

我正在编写一个 api 来通过 id 获取员工,但我遇到的问题是 Controller 调用服务中的另一个函数并将参数和回调传递给该函数。但是当函数调用回调时,我收到错误。代码如下。我查看了网上的示例并尝试对其进行故障排除,但失败了。我对 getall 方法有类似的设置,它没有参数,而且似乎工作正常。代码如下。

Controller 代码是。

  function getById(req, res, next) {
    userService.getById(req.params.id, (results) => {
      res.json(results);
        })
      .catch(err => next(err));
      }

服务代码是。

 async function getById(id, callback) {database.query('SELECT * FROM employee WHERE id =' +id, (err, results) => {
       if (err) {
       callback(err);
       } else
        callback(results);
       });
      }

我得到的错误是:

TypeError: callback is not a function
    at Query.database.query (/user.service.js:52:7)
    at Query.<anonymous> (/Connection.js:525:10)
    at Query._callback (/Connection.js:491:16)
    at Query.Sequence.end (/Sequence.js:83:24)
    at Query.ErrorPacket (/Query.js:90:8)
    at Protocol._parsePacket (/Protocol.js:291:23)
    at Parser._parsePacket (/Parser.js:433:10)
    at Parser.write (/Parser.js:43:10)
    at Protocol.write (/Protocol.js:38:16)
    at Socket.<anonymous> (/Connection.js:91:28)
    at Socket.<anonymous> (/Connection.js:525:10)
    at Socket.emit (events.js:182:13)
    at addChunk (_stream_readable.js:283:12)
    at readableAddChunk (_stream_readable.js:264:11)
    at Socket.Readable.push (_stream_readable.js:219:10)
    at TCP.onread (net.js:639:20)

最佳答案

您正在混淆概念:

function getById(req, res, next) {
    UserService.getById(id)
        .then(res => console.log(res))
        .catch(err => console.error(err))
}


function getById(id) {
    return new Promise((resolve, reject) => {
        database.query('SELECT * FROM employee WHERE id =' + id, (err, results) => {
            if (err) 
                reject(err)

            resolve(results)
        });
    })
}

关于javascript - 带参数和回调的 Nodejs 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011784/

相关文章:

mysql - 如果信用卡的到期日期仅包含月份和年份,如何存储?

php - 使用 Laravel DB Seed 插入 100 万条记录

javascript - 使用回调函数传递参数

javascript - 选择图像后如何填充tinyMCE图像上传弹出字段

javascript - 'let 和 'var' 在 Typescript 中是一样的吗?

javascript - 如何根据路由更改父组件上的 header

javascript - MongoDB 聚合 $lookup $match

java - 如果列字段为空,mysql 将其视为空

ruby-on-rails - 在Rails中手动设置updated_at

JavaScript:异步事件回调的线程安全? (我需要 'volatile' 还是什么?)