如何在Node.js中将一个函数结果传递给另一个函数

如何在Node.js中将一个函数结果传递给另一个函数,node.js,Node.js,我有在里面创造的功能;我正在通过调用另一个helper函数来检查它是否已创建,但我无法返回该helper函数的结果;如果我这样做了,我只能得到未定义的结果 以下是我的功能: //controller / form.js; exports.createFormsElement = (req, res) => { console.log("Post a Elements: " + JSON.stringify(req.body)); formById = formsHelper.for

我有在里面创造的功能;我正在通过调用另一个helper函数来检查它是否已创建,但我无法返回该helper函数的结果;如果我这样做了,我只能得到未定义的结果

以下是我的功能:

//controller / form.js;
exports.createFormsElement = (req, res) => {
  console.log("Post a Elements: " + JSON.stringify(req.body));
  formById = formsHelper.formById("1");
  console.log("formById" + formById);
  res.send({ result: formById ? formById : "empty" });
  return;
};

//helper/forms.js 
module.exports = {
    formById: function(idForms) {
        Forms.findOne({
            where: {
                idForms: idForms
            },
            attributes: ['idForms']
        }).then(data => {
            return data;
        });
    }
}
试试这个:

function fOne () {
  return 'test'; // "return" passes the function result to the calling function
}

function fTwo() {
  console.log(fOne());
}

代码的问题是您有一个异步操作,即数据库调用。在您的函数中,您期望从工作不好的函数中同步返回,因为您需要等待I/O完成。解决办法是

//controller / form.js;
exports.createFormsElement = async (req, res) => {
  console.log("Post a Elements: " + JSON.stringify(req.body));
  const formById = await formsHelper.formById("1");
  console.log("formById" + formById);
  res.send({ result: formById ? formById : "empty" });
};

//helper/forms.js 
module.exports = {
    formById: function(idForms) {
        return Forms.findOne({
            where: {
                idForms: idForms
            },
            attributes: ['idForms']
        })
    }
}

请注意,helper/forms.js和controller/form.js中都有更改,但是node 7.6或更高版本本机支持异步,或者您可能必须使用transpiler或回调。

您可以分享您所做的示例代码吗?//controller/form.js exports.createFormsElement=(req,res)=>{console.log('Post a Elements:'+JSON.stringify(req.body));formById=formsHelper.formById('1');console.log('formById'+formById');res.send({result:formById?formById:'empty'});return};//helper/forms.js module.exports={formById:function(idForms){forms.findOne({where:{idForms:idForms},属性:['idForms']})。然后(数据=>{return data;});}我可以得到这样的结果,但如果我尝试访问数据库,我可以得到,但我无法将其传递给控制员。如果您认为这是您问题的答案或解决方案,我希望您将其标记为正确答案。这还可以帮助有类似问题的人相对快速地确定问题的答案:)