of Astora 𒉭
Создай отдельную модель, прикрути каунт, проитерируй всю бд, и записуй ы дальнейшем всю нужную инфу
можно просто взять асе каунты с помощью метода count() после всё сплюсовать и кинуть на фронт
Admin
я это предлагал, он сказал что ему не подходит
ну конечно не подходит, 20-50 сек выполняется запрос
RapidCodeLab
db.collection.stats().count выполняется моментально, только что проверил на коллекции 26М
RapidCodeLab
это в mongosh запрос, я ноду не использую, посмотрите что там драйвер умеет, если не умеет так, сделайте PR
RapidCodeLab
runCommand или типа того должно же быть
RapidCodeLab
я через estimatedDocumentCount(), на ноде у тя ?
кстати estimatedDocumentCount() этож тоже самое
Admin
runCommand или типа того должно же быть
мб есть но не получается достать этот метод, в доке про это не говорится но в гиттхабе есть файл с таким именем
Admin
то есть говорится только про метод монгоша
RapidCodeLab
estimatedDocumentCount() у меня тоже моментально, т.к. он с меты берет инфу я так понял
Admin
кстати estimatedDocumentCount() этож тоже самое
ну да, мне главное не перебирать коллекции чтобы достать эту инфу
RapidCodeLab
в метаданных это есть, в результатах stats()
RapidCodeLab
db.col.stats() { ns: 'dbname.col', size: Long("16651926280"), count: 15300882, ..... то есть можно запросить stats() и получить потом result.count в объекте результата
RapidCodeLab
ну да
Admin
ну да
это здесь насколько понял
Kvhqm
это про всю коллекцию ?
Бляяя, ты целый день каунт пытаешься вывести? Уже б руками посчитал, и статикой указал на фронте :)
RapidCodeLab
это здесь насколько понял
да х.з. где там, просто это есть, осталось найти, путь указан)
Admin
бля в пизду, непонятная хуйня
Denis
Всем привет, а text индекс может быть unique? (не создается, хотя дубликатов поля нету) Видимо никак и придется отдельным полем хеш текста хранить
Viktar
бля в пизду, непонятная хуйня
Попробуйте выражать свои мысли без мата. Тут не принято материться.
XMT
Привет, ребятки. Поможете?)
XMT
Вот такая ошибка: const err = new MongooseError(message); ^ MongooseError: Operation users.insertOne() buffering timed out after 10000ms
XMT
Код сюда скидывать? 😅
XMT
import express from 'express'; import jwt from 'jsonwebtoken'; import mongoose from "mongoose"; import bcrypt from 'bcrypt'; import {registerValidation} from "./validations/auth.js"; import {validationResult} from "express-validator"; import UserModel from "./models/User.js"; mongoose.connect('mongodb+srv://name:pass@cluster0.zesdawo.mongodb.net/blog?retryWrites=true&w=majority') .then(() => console.log('ok')) .catch(err => console.log(err)); const app = express(); app.use(express.json()); app.post('/signup', registerValidation, async (req, res) => { const errors = validationResult(req); if (!(errors.isEmpty())) { return res.status(400).json(errors.array()); } const password = req.body.password; const salt = await bcrypt.genSalt(10); const passwordHash = await bcrypt.hash(password, salt); const doc = new UserModel({ email: req.body.email, fullName: req.body.fullName, avatar: req.body.avatar, passwordHash: passwordHash }); const user= await doc.save(); res.json(user); }); app.listen(3333, () => { console.log('ok'); });
XMT
Вот 😁
XMT
В инете вообще не могу найти корректный ответ
Магомед
Ща
Скрин
XMT
Прикол в том, что я повторяю код с видоса и у него ошибок нет 🤣
Магомед
попробуй написать в последней строчке не 'User', а 'user'
XMT
Еще ошибка пришла
XMT
MongooseServerSelectionError: 8125619712:error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:ssl/record/rec_layer_s3.c:1563:SSL alert number 80
Магомед
import express from 'express'; import jwt from 'jsonwebtoken'; import mongoose from "mongoose"; import bcrypt from 'bcrypt'; import {registerValidation} from "./validations/auth.js"; import {validationResult} from "express-validator"; import UserModel from "./models/User.js"; mongoose.connect('mongodb+srv://name:pass@cluster0.zesdawo.mongodb.net/blog?retryWrites=true&w=majority') .then(() => console.log('ok')) .catch(err => console.log(err)); const app = express(); app.use(express.json()); app.post('/signup', registerValidation, async (req, res) => { const errors = validationResult(req); if (!(errors.isEmpty())) { return res.status(400).json(errors.array()); } const password = req.body.password; const salt = await bcrypt.genSalt(10); const passwordHash = await bcrypt.hash(password, salt); const doc = new UserModel({ email: req.body.email, fullName: req.body.fullName, avatar: req.body.avatar, passwordHash: passwordHash }); const user= await doc.save(); res.json(user); }); app.listen(3333, () => { console.log('ok'); });
Знаешь, скорее всего твой запрос к БД занимает слишком много времени. Думаю это связано с bcrypt. Попробуй задать меньший salt, чтобы хеширование не занимало слишком много времени или попробуй вовсе закоментировать строчки с хешированием, и сохранять чистый пароль, чтобы проверить в нём ли дело
Магомед
Ща попробую, но думаю не поможет 😁
Ну или можешь увеличить таймаут
Магомед
Не, не работает
Пробовал уменьшить salt?
XMT
Пробовал уменьшить salt?
Я его без хеша попробовала кинуть
XMT
Не, не помогло :(
Магомед
Магомед
Так тоже обернул 🥹
Model.insertOne({ name: 'John' }, { timeout: 20000 }) Пробовала?
Магомед
Я его без хеша попробовала кинуть
Тогда почему тут "она"?
XMT
На айфоне он же голимый 🥹
XMT
Ну так что?
Не, не пробовал. Попробую
XMT
У меня он метода просто такого не видит
XMT
Через collection нашел)
Магомед
UserModel.insertOne?
new UserModel({ name: 'John' }, { timeout: 20000 })
Магомед
Через collection нашел)
Тот же подход, просто разный синтаксис
XMT
Сенкью 🥹
Магомед
XMT
Надо mongoose учить 😅
Магомед
Надо mongoose учить 😅
У меня есть конспект по mongoose
Магомед
Могу дать
XMT
Го)
Магомед
Го)
https://impossible-light-d4e.notion.site/2da676e82e744bdcb9233f8ded9ea4a4?pvs=4
XMT
https://impossible-light-d4e.notion.site/2da676e82e744bdcb9233f8ded9ea4a4?pvs=4
А сохранять как я понял нужно? save()
XMT
MongooseError: document must have an _id before saving
XMT
🙄🙄🙄
Магомед
MongooseError: document must have an _id before saving
Ну добавь поле _id со значением mongoose.ObjectId