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
как сделать так, что бы в коллекции всегда был один документ?
Bandikoot
как сделать так, что бы в коллекции всегда был один документ?
не делать в неё insert'ы после первого дока? (: на уровне прав можно запретить вполне успешно
Yuri
если делать updateOne, то он не создаст новый документ, когда это надо
Yuri
то есть нужно, что бы если документа нет, то он создавался, а если нет - то обновлялся
Bandikoot
если делать updateOne, то он не создаст новый документ, когда это надо
чувствую проблему XY. опишите подробнее ваш кейс
Yuri
Я хочу сохранять состояние. Состояние является объектом. Есть коллекция state. Документ, в котором хранится состояние должен быть в единственном экземпляре. Когда документ не существует, он должен быть создан при сохранении состояния, либо обновлен, если документ уже существует
Yuri
Спасибо, разобрался. Оказывается надо было в методе updateOne добавить параметр {upsert: true}
Bandikoot
Приветы. Ктонить знает адекватную прикрутку MongoDB для Django2? Я два дня тестю некоторые, пока всё плохо( То криво работает, то просто не реализовано половина важных вещей. И всё-таки, может есть гдето релизного качества решение?
чуть ранее в чате было обсуждение ODM под python. попробуйте по этим словам поискать. tl;dr зачем полуработающие odm, когда pymongo достаточно нативно для питона всё предоставляет
Nick
Спасибо, разобрался. Оказывается надо было в методе updateOne добавить параметр {upsert: true}
помимо этого еще нужен уникальный индекс, если хотите контролировать отсутвияе дублей
paulwinex
чуть ранее в чате было обсуждение ODM под python. попробуйте по этим словам поискать. tl;dr зачем полуработающие odm, когда pymongo достаточно нативно для питона всё предоставляет
да, я находил пару вариантов ODM, они все используют pymongo. Вопрос именно про совместимость с django и его архитектурой. Так то мне хватило бы и mongoengine но чтобы это удобно работало в django надо еще всякие штуки добавить, типа правильная обработка стандартных команд, видимость в админке и тд. Есть пара проекто типа django-mongo-engine в том числе от ребят что сделали сам engine но они не развиваются, последний обновлялся под django 1.6. Самый похожий на правду это djongo, обещают вообще полную совместимость без зименения кода. Но там тоже всё медленно, многое не готово. В общем пока рановато думать про полную совместимость. Щас подумываю использовать обычный mongoengine а вместо админки запускать mongo-express. Но придется много всякого допиливать всё равно.
paulwinex
спасибо за ответ
Nick
это должно идти по дефолту через индекс по _id
А кто сказал что id единственный критерий, который должен быть уникальный? Например телефон, емейл, данные паспорта
Nick
А id это лишь ключ бд
Bandikoot
А кто сказал что id единственный критерий, который должен быть уникальный? Например телефон, емейл, данные паспорта
у некоего state, который должен быть единственным в коллекции по задумке автора вопроса? ну это как бы самый логичный вариант
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, то нагрузка будет меньше чем без лимита?
Lev
«сапн» это снепшот файловой системы?
Извиняюсь, не заметил опечатку. Snap.
yopp
Ребята как сделать сортировку документа в базе
https://docs.mongodb.com/manual/reference/method/cursor.sort/
yopp
Извиняюсь, не заметил опечатку. Snap.
это я опечатался. что такое snap?
Dmytro
@dd_bb спасибо)))
Anonymous
приведите пример пожалуйста, ничего не понятно
В доке около 100 Article. Article.find.limit(1).exec() и Article.find.exec() по производительности сильно различаются?
Lev
Манагер пакетов. Он тут не при чем как мне кажется. Через него установлен rocket chat, а тот в свою очередь хрень пойми каким образом монгой распоряжается
Lev
это я опечатался. что такое snap?
Реплайнуть забыл, сорян
yopp
В доке около 100 Article. Article.find.limit(1).exec() и Article.find.exec() по производительности сильно различаются?
если вы хотите получить только 1 статью, то лучше указать лимит. если вы хотите все 100, то лимит указывать не надо. в масштабах сотни документов разнцы вообще не будет
Anonymous
как у монгуса лимит делает, он снаачала получает весь массив, потом режет до одного? или поулчает сразу первый
yopp
как у монгуса лимит делает, он снаачала получает весь массив, потом режет до одного? или поулчает сразу первый
не знаком с внутренностями монгуса, но курсоры в монге по-умолчаю возвращают документы пакетами, по 101 штуке, если иное не указано в запросе.
Anonymous
ок, спасибо
Артем
Здорово @pashkapo )
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
или s3
Anonymous
а где хранить тогда?
На серваке с апишкой,я файлы к примеру записываю на отдельный сервак
Anonymous
Которые шейрит их через паблик
JASWGO
На серваке с апишкой,я файлы к примеру записываю на отдельный сервак
у проблем нет с зармером диска, там всего будет 5-10ГБ
Anonymous