我有一个返回字符串的函数,但是无论我尝试什么导出策略,我似乎都无法调用这个函数并返回字符串。所有内容都返回未定义。如有任何指点或帮助,将不胜感激
在下面的示例中,我用::
常量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()
你的方法有很多地方不对。简而言之,您不能这样做,因为函数不返回任何内容。在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
});
如果你感兴趣,这里有更多细节。