0
Я изо всех сил пытаюсь понять, что не так со следующими запросами. Я использую mongoose 4.1.10 и mongodb 3.0.6.mongoose не разрешает запросы
passport.use("local-signup", new passportLocal.Strategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'email',
passwordField : 'password'
//passReqToCallback : true // allows us to pass back the entire request to the callback
}, (username, password, done) => {
co(function *() {
try {
const user = yield User.findOne({ "local.email": username });
if (user) {
return done(null, false);
}
else {
const newUser = new User();
newUser.local.email = username;
yield newUser.save();
}
}
catch(ex) {
done(ex);
}
}).then((user) => {
done(null, user);
});
}));
Подробнее User.findOne({ "local.email": username });
не разрешается.
Я даже попытался использовать подход обратного вызова, но снова не получаю никаких результатов.
«сделано» в другом месте? вы должны вернуть значение из генератора или выбросить ошибку –
Посмотрите на обновленный вопрос. На самом деле, ты не прав; Я получаю значения от генератора. Вам не нужно явно указывать оператор return. Фактически, вы должны опустить возвращаемые значения. Лучше использовать 'yield' для этого – ppoliani
. Я не уверен, что вы хотите называть' done() 'из вашего' then() '. Кажется, что код как есть, иногда вызывает 'done()' дважды. Один раз из генератора, а затем снова из then() –