【问题标题】:Node JS object return as undefined节点 JS 对象返回未定义
【发布时间】:2021-04-13 21:58:11
【问题描述】:

我有一个 express api 端点。

我的 createS 服务是这样的:

async function createS(name, user_ids) {
    const seg = new Seg ({
        name : name,
        user_ids : user_ids
    })

      await seg.save().then(doc => {
          console.log(doc);===============>>> not undefined
          return {doc}
      }).catch(err => {console.log(err)});

}

我的控制器是这样的:

async function createS(req,res,next){
    const sName = req.body.name;
    const user_ids = req.body.user_ids;
    console.log("*****")
    segService.createS(sName, user_ids).then(function (doc){
        console.log(doc)=============================================>>> undefined
    })

我知道这个问题取决于异步过程。我尝试了几种类型的解决方案,我也是 Node JS 的新手。

为什么会出现这个错误?我该如何解决这个错误?

【问题讨论】:

标签: javascript node.js express asynchronous async-await


【解决方案1】:

您的createS 服务需要返回一个承诺,而不是实际的doc

重构您的服务,使其看起来像这样

async function createS(name, user_ids) {
  const seg = new Seg ({
    name : name,
    user_ids : user_ids
  })

  return seg.save()
}

【讨论】:

  • 看起来不错,但是。在这种情况下,您必须在控制器中处理错误。你也可以离开async
  • 谢谢@Peter。你介意给它一个赞成票吗?
  • 在您的帖子编辑过程中发生了一些错误。我在这里粘贴它:控制器错误处理:异步函数 createS(req,res,next){ const sName = req.body.name;常量 user_ids = req.body.user_ids; console.log("*****") try { const doc = await segService.createS(sName, user_ids) console.log(doc); } catch(err) { console.log(err) } }
猜你喜欢
  • 2018-10-11
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 2020-06-01
  • 1970-01-01
  • 2018-06-10
  • 2014-09-23
相关资源
最近更新 更多