Nick
как вы описываете стратегию в паспорте?
Anonymous
const LocalStrategy = require('passport-local');
const User = require('../../../models/User');
module.exports = new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password'
},
// Три возможных итога функции
// done(null, user[, info]) ->
// strategy.success(user, info)
// done(null, false[, info]) ->
// strategy.fail(info)
// done(err) ->
// strategy.error(err)
(email, password, done) => {
User.findOne({ email }, (err, user) => {
if (err) {
return done(err);
}
if (!user || !user.checkPassword(password)) {
return done(null, false, { message: 'Нет такого пользователя или пароль неверен.' });
}
return done(null, user, { message: 'Добро пожаловать!' });
});
}
);
Nick
{
usernameField: 'email',
passwordField: 'password'
},
Nick
userSchema.virtual('emailHash')
.set(function setEmailHash() {
Nick
тут вместо emailHash укажите password
Anonymous
Сюда добавить, emailHash?
Nick
и вам бы определить функцию с параметром, а не пустую
Nick
userSchema.virtual('password')
.set(function setPsw(password) {
Nick
чтото такое
Anonymous
Вообще у меня есть функция установления хэша пароля и соли.
userSchema.virtual('password')
.set(function setPassword(password) {
if (password !== undefined) {
if (password.length < 4) {
this.invalidate('password', 'Пароль должен быть минимум 4 символа.');
}
}
// '123123' + 'ijfasdiofja849' => 'asdf8a7sdf897asd8f7asdf'
this.salt = crypto.randomBytes(config.get('crypto.hash.length')).toString('base64');
this.passwordHash = crypto.pbkdf2Sync(
password,
this.salt,
config.get('crypto.hash.iterations'),
config.get('crypto.hash.length'),
'sha512'
).toString('base64');
});
Nick
и тогда зачем вам еще чтото?
Anonymous
Мне нужно создать хэш для email
Anonymous
чтобы можно было подтверждение сделать.
Nick
ну так создавайте его там же где и солите пароль и хешите его
Anonymous
Ок спасибо!
Anonymous
👍👍👍👍Большое!
Nick
или задайте через вирутал для email
paulwinex
Приветы. Ктонить знает адекватную прикрутку MongoDB для Django2? Я два дня тестю некоторые, пока всё плохо( То криво работает, то просто не реализовано половина важных вещей. И всё-таки, может есть гдето релизного качества решение?
Yuri
как сделать так, что бы в коллекции всегда был один документ?
Yuri
если делать updateOne, то он не создаст новый документ, когда это надо
Yuri
то есть нужно, что бы если документа нет, то он создавался, а если нет - то обновлялся
Bandikoot
Yuri
Я хочу сохранять состояние. Состояние является объектом. Есть коллекция state. Документ, в котором хранится состояние должен быть в единственном экземпляре. Когда документ не существует, он должен быть создан при сохранении состояния, либо обновлен, если документ уже существует
Yuri
Спасибо, разобрался. Оказывается надо было в методе updateOne добавить параметр {upsert: true}
Bandikoot
Nick
paulwinex
чуть ранее в чате было обсуждение ODM под python. попробуйте по этим словам поискать.
tl;dr зачем полуработающие odm, когда pymongo достаточно нативно для питона всё предоставляет
да, я находил пару вариантов ODM, они все используют pymongo. Вопрос именно про совместимость с django и его архитектурой. Так то мне хватило бы и mongoengine но чтобы это удобно работало в django надо еще всякие штуки добавить, типа правильная обработка стандартных команд, видимость в админке и тд. Есть пара проекто типа django-mongo-engine в том числе от ребят что сделали сам engine но они не развиваются, последний обновлялся под django 1.6. Самый похожий на правду это djongo, обещают вообще полную совместимость без зименения кода. Но там тоже всё медленно, многое не готово. В общем пока рановато думать про полную совместимость. Щас подумываю использовать обычный mongoengine а вместо админки запускать mongo-express. Но придется много всякого допиливать всё равно.
paulwinex
спасибо за ответ
Bandikoot
Nick
А id это лишь ключ бд
Bandikoot
прочитайте оригинальный вопрос перед тем, как спорить)
Nick
Мои рекомендация достаточно общая чтобы подходить под любой кейс
Nick
Плюс если есть неконтролируемый доступ в бд или всякие синхронизации извне приложения, то только инднксы позволят получить консистентность за дешево
Sergey️
Есть коллекция, в ней есть ключ который является словарем, надо получитаь записи где имеются определенные ключи в стиле
collection = {head_key: {mykey: ???} }
Пишу collection.find({'head_key': {'some_key': {$exists: true} } }), но получаю 0 записей
some_key точно существует, проверил скриптом со стаковерфлоу все ключи которые есть в head_key
Что делаю не так?
Sergey️
Интересный синтаксис, нужно было искать
collection.find({'head_key.some_key': {$exists: true} })
Вопрос решен
Aleksandr
Всем привет, не подскажете: Собираемся использовать ops manager, если накатить авторизацию используя CE будут ли проблемы при обновлении до ops manager?
Dmytro
Всем привет
Dmytro
подскажыте по поводу $currentDate
Dmytro
не могу сделать update по дате
Dmytro
Ребята как сделать сортировку документа в базе
Lev
Привет, ребята. Всё никак не могу разобраться как базу из снапа вынуть в человеческом виде
Lev
имел кто опыт?
Lev
копирую из директории где они были в снапе (с префиксом названия приложения в названии файлов) в /data/db и нет ничего. Там создаются новые с префиксом index
Anonymous
всем ку, если из доки где сотня статей буду делать limit(1) > exec, то нагрузка будет меньше чем без лимита?
yopp
yopp
Lev
yopp
Dmytro
@dd_bb спасибо)))
Lev
Манагер пакетов. Он тут не при чем как мне кажется. Через него установлен rocket chat, а тот в свою очередь хрень пойми каким образом монгой распоряжается
Lev
Anonymous
как у монгуса лимит делает, он снаачала получает весь массив, потом режет до одного? или поулчает сразу первый
yopp
Lev
Anonymous
ок, спасибо
Артем
Здорово @pashkapo )
Pavel
Yuri
Доброго вечера всем. Подскажите, как с помощью курсора пройти по многомиллионной коллекции фиксированным размером (1000 записей)?
cursor.forEach же будет перебирать записи по одной? А надо кусками
yopp
курсор сам по себе возвращает документы пакетами по 101 штуке или в количестве, указанном в batchSize
Yuri
но client.next( ) отдает только один документ, а не пакет?
Victor
https://i.imgur.com/ltMYc3k.png подскажите плз что это может быть за фигня? приложение работает, через консольный интерфес коннектит, никакаие настройки не менял в компасе и пару дней назад пускало
Victor
даже не знаю как это дебажить и почему оно вдруг сломалось, я ничего не делал и не менял)
Victor
ну офигенно, че :)
https://i.imgur.com/45RVGlG.png
JASWGO
Всем привет. Я тут запусти свой мини проект на Parse Server + MongoDB. Но оказалось что у MongoDB проблемы с хранением больших файлов. У меня файлы по ~50МБ и их примерно 30 штук. Они должны храняться и отдаваться клиенту. Записываться будут только 1-2 раза. И сейчас я не могу записывать другие файлы. Версия 2.6. Что посоветуете сделать?
Kool
не хранить их в монго
JASWGO
а где хранить тогда?
Anonymous
Ребятки, есть гуру монгуса тут?)
Kool
Kool
или s3
Anonymous
Которые шейрит их через паблик
JASWGO
Anonymous