我具有在其中创建功能;我正在通过调用另一个辅助函数来检查它是否已创建,但是我无法返回该辅助函数的结果。如果我做了,我只能得到未定义的。
这是我的功能:
//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;
});
}
}
答案 0 :(得分:0)
您的代码存在的问题是您有一个异步操作,即数据库调用。在您的函数中,您期望同步的返回值无法正常工作,因为您需要等待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都进行了更改,但是,更高版本的节点7.6或更高版本本身支持异步,或者您可能必须使用转译器或回调。
答案 1 :(得分:-1)
尝试一下:
function fOne () {
return 'test'; // "return" passes the function result to the calling function
}
function fTwo() {
console.log(fOne());
}