module.exports函数返回undefined不是值

时间:2017-11-05 19:03:24

标签: javascript node.js express recursion

我不知道为什么导出的函数findChilds会返回undefined

功能如下:

const Folder = module.exports = mongoose.model('folder', FolderSchema);

module.exports = {

    findChilds: (folderId) => {
        Folder.find({
            parent: folderId
        }).then((childs => {
            childs.forEach((child => {
                module.exports.findChilds(child._id)
            }));
            return childs;
        }));
    }

};

并致电:

const folderModel = require('../models/Folder');

router.get('/remove/:id', (req, res) => {
    let functionResult=folderModel.findChilds(req.params.id);
    console.log(functionResult)
});

functionResult仅显示未定义。

1 个答案:

答案 0 :(得分:0)

使用箭头功能时,您有两种返回值的方法:

使用不带括号的单个表达式{}

module.exports = {
    findChilds: (folderId) => Folder.find({ parent: folderId})
       .then((childs => {
            childs.forEach((child => {
               module.exports.findChilds(child._id)
            }));
            return childs;
        }))
}

使用实际的return关键字:

module.exports = {
    findChilds: (folderId) => {
        return Folder.find({parent: folderId }).then((childs => {
            childs.forEach((child => {
                module.exports.findChilds(child._id)
            }));
            return childs;
        }));
    }
};

在查看forEach方法中的then循环时请记住这一点,您也会遇到问题!

英语不是我的母语,但孩子听起来像孩子一样好;)