首页 > 解决方案 > 节点 JS 对象返回未定义

问题描述

我有一个快速 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 的新手。

为什么我收到此错误?我该如何解决这个错误?

标签: javascriptnode.jsexpressasynchronousasync-await

解决方案


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

重构你的服务看起来像这样

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

  return seg.save()
}

推荐阅读