Я пытаюсь использовать стратегию passport-local и knex-соединение с postgresql для аутентификации пользователя в приложении nodejs.Ниже приведены зависимости к файлу приложения и экземпляру LocalStrategy:
index.js
var express = require('express'),
app = express(),
server = require('http').createServer(app),
session = require('express-session'),
passport = require('passport')
bcrypt = require('bcryptjs')
LocalStrategy = require('passport-local').Strategy;
db = require('./db');
queries = require('./queries');
app.use(passport.initialize());
app.use(passport.session());
options = {};
passport.use(new LocalStrategy(options, (username, password, done) =>{
queries.findOne().then((user)) => {
console.log(user)
if (!user) return done(null, false);
if (!autHelpers.comparePass(password, user.password)) {
return done(null, false);
} else {
return done(null, user);
}
}
}
));
В файле запросов я разместил findOne () функция для поиска пользователей
query.js
const knex = require ('./db');
module.exports = {
findOne() {
return knex('users').where("username", username).first()
}
}
Однако при запуске приложения в консоли выдается следующая ошибка:
.getOne ()
SyntaxError: неожиданный токен.
при createScript (vm. Js: 80: 10)
...
Кажется, по какой-то причине он не принимает оператор queries.findOne()
.Я попробовал passport.use
без операторов внутри => {}
, и это не привело к ошибке в приложении.
Должен ли я писать queries.findOne()
другим способом?Я также думал об обёртывании этой функции внутри app.use()
, но я чувствую, что это не логично.
Кажется, я где-то сделал опечатку, но все, что я пробую, ведет в тупик, и я не могу понять этот простой.