gpt4 book ai didi

javascript - module.exports 来自 promise

转载 作者:搜寻专家 更新时间:2023-11-01 00:20:36 27 4
gpt4 key购买 nike

我如何将函数 initPassport 从 turbo.then() 分配给 module.exports?

function turbo() {
return new Promise(function (resolve, reject) {
UsersModel.find({
userName: 'bumblebee'
}, function (err, userMongo) {
userMongo.forEach(function (one) {
resolve({
username: one.userName,
password: one.password
});
});
});
});
}

turbo.then(function (data) {
var user = data;

function initPassport() {
passport.use(new LocalStrategy(
function (username, password, done) {
findUser(username, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false);
}
if (password !== user.password) {
return done(null, false);
}
return done(null, user);
});
}
));
passport.authenticationMiddleware = authenticationMiddleware;
}
});

module.exports = ??????????;

module.exports = initPassport;不行。告诉我,我应该如何重写这段代码才能工作?

最佳答案

这可以通过多种方式实现,我将在下面突出显示 2。

方法#1

将匿名函数移到行的开头:

turbo.then(function (data) {

要附加到 turbo 函数中:

function turbo() {
return new Promise(function (resolve, reject) {
...
})
.then(function (data) {
...
});
}

然后 module.exports 可以设置为 turbo

方法#2

将匿名函数移动为命名定义,例如:

function authentication(data) {
var user = data;

function initPassport() {
passport.use(new LocalStrategy(
function (username, password, done) {
findUser(username, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false);
}
if (password !== user.password) {
return done(null, false);
}
return done(null, user);
});
}
));
passport.authenticationMiddleware = authenticationMiddleware;
}
}

然后 module.exports 可以设置为如下内容:

module.exports = function () {
return turbo().then(authentication);
};

关于javascript - module.exports 来自 promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48011481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com