Надеюсь, кто-нибудь может помочь мне решить, что, я уверен, является ошибкой ладьи ie.
Я пытаюсь адаптировать приложение аутентификации, изначально основанное на mongodb, для работы с sequelize \ MS SQL. , но завязывая узлы, пытаясь совместить рабочий пример на основе обратного вызова с обещанным подходом seqeulize.
Оба MongoDb \ Sequelize предлагают метод findOne ().
Оригинальный (рабочий) код, ссылающийся на коллекцию MongoDb:
module.exports.getUserByUsername = function(username,callback){
var query = {username: username};
User.findOne(query,callback);
}
Обратный вызов в этом случае происходит из отдельного вызывающий модуль и является стандартным паролем проверки для паспорта. js локальная стратегия.
Поскольку метод sequelize findOne () ожидает предложение where, я надеялся, что следующее будет готовым решением :
module.exports.getUserByUsername = function(username,callback){
var query = {where: {username: username}};
User.findOne(query,callback);
}
Это выводит функциональный запрос в console.log, но обратный вызов не запускается, поэтому страница зависает.
Глядя на соответствующие документы API, кажется, что сиквелизируется findOne () основывается исключительно на обещаниях, тогда как MongoDb findOne () возвращает обещание только в том случае, если функция обратного вызова не передается методу findOne (), в противном случае поток передается обратному вызову, когда он предоставляется, как в случае с рабочим примером. ,
Я попробовал следующую адаптацию для работы с обещанием продолжения (и целым рядом его перестановок, вызывающих функцию обратного вызова в предложении .then () et c)., Но все они терпят неудачу с зависшей страницей ::
module.exports.getUserByUsername = function(username,callback){
var query = {where: {username: username}};
return User.findOne(query).then(user => {
console.log(user.get({ plain: true }));
return user.dataValues;
//callback(user.dataValues)
}).finally(() => {
console.log('done!')
});
}
console.log (user.get ()) выводит правильные данные, показывающие, что запрос к базе данных выполнен правильно, возвращая необходимые пользовательские данные, поэтому я чувствую, что я очень близок к поиску правильный синтаксис для доставки этого обратно к обратному вызову паспорта.
Любая помощь будет принята с благодарностью!