【问题标题】:Crud Operations as Callback FunctionCrud 操作作为回调函数
【发布时间】:2021-11-17 05:34:28
【问题描述】:

我想知道如何将 CRUD 操作编写为回调,以便尊重关注点分离。

例如,我编写了可以返回所有用户的操作:

UserService.js

function getUsers(callback) {

  User.find(function(err, users) {

    if (err) {
      console.log("Fehler bei Suche: " + err)
      return callback(err, null)
    }
    console.log("Alles gut gelaufen.");
    return callback(null, users);
  })
}

UserRoute.js

router.get('/publicUser', function(req, res, next) {

  userService.getUsers(function(err, result) {
    console.log("Resultat: " + result)
    if (result) {
      res.send(Object.values(result))
    } else {
      res.send("Es gab Probleme.")
    }
  })

})

一个对应的 CRUD 函数,没有回调,只返回一个用户,在我看来是这样的。

Userservice.js

function getByUserId(req, res, next) {

  let userIDD = req.body.userID;
  User.findOne({
    userID: userIDD
  }, function(err, result) {
    if (err) {
      console.log("Fehler bei Suche: " + err)
    } else {

      console.log("Alles gut gelaufen.");
      res.send(result)
    }
  })
}

UserRoute.js

router.post('/publicUser/getByUserID', userService.getByUserId)

现在,同一个函数究竟是什么样子的呢?

【问题讨论】:

    标签: javascript express callback crud


    【解决方案1】:

    通常箭头函数用于回调,以便遵守关注点分离。

    示例: 在 UserRoute.js 中

    router.get('/publicUser', (req, res, next) => {
      userService.getUsers( (err, result) => {
        console.log("Resultat: " + result)
        if (result) {
          res.send(Object.values(result))
        } else {
          res.send("Es gab Probleme.")
        }
      })
    
    })
    

    这里你可以看到不需要为每个回调编写函数,箭头函数也有助于分离

    这是我第一次回答关于stackoverflow的任何问题,我希望解决方案能理解你:)

    【讨论】:

    • 很高兴知道,但我真的需要知道如何getByUserID写成回调函数。
    猜你喜欢
    • 2014-06-28
    • 2016-12-15
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多