如何在Node.js中将一个函数结果传递给另一个函数
我有在里面创造的功能;我正在通过调用另一个helper函数来检查它是否已创建,但我无法返回该helper函数的结果;如果我这样做了,我只能得到未定义的结果 以下是我的功能:如何在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
//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;});}我可以得到这样的结果,但如果我尝试访问数据库,我可以得到,但我无法将其传递给控制员。如果您认为这是您问题的答案或解决方案,我希望您将其标记为正确答案。这还可以帮助有类似问题的人相对快速地确定问题的答案:)