提问者:小点点

NodeJS模块出口问题


我有一个返回字符串的函数,但是无论我尝试什么导出策略,我似乎都无法调用这个函数并返回字符串。所有内容都返回未定义。如有任何指点或帮助,将不胜感激

在下面的示例中,我用::

常量generateUsername=require(“。。/middlewares/generateUsername.js”);

newUser.userName=生成用户名;

function GenerateUnique() {
    let proposedUserName = generateUserName();
    //Works and returns a string "UNIQUEUSERNAME1223"   
 User.findOne({username: proposedUserName}).then((foundUserName) => {

        if (!foundUserName) {
            return proposedUserName;
        } else {
            GenerateUnique()
        }
    })
}

function generateUnique() {
    return new GenerateUnique();
}


module.exports = generateUnique()

共1个答案

匿名用户

你的方法有很多地方不对。简而言之,您不能这样做,因为函数不返回任何内容。在then中使用return只是给promise的调用方一个返回值。父函数将不会返回此值。

但是,您可以将代码重构为如下所示:

function generateUnique() {
    let proposedUserName = generateUserName();
    return User.findOne({username: proposedUserName}).then((foundUserName) => {

        if (!foundUserName) {
            return proposedUserName;
        } else {
            GenerateUnique();
        }
    })
}


module.exports = generateUnique();

当您在其他文件上导入此模块时:

const unique = require('yourmodulename').then(proposedUserName => {
   //you can access your proposed username from here
});

如果你感兴趣,这里有更多细节。