Nick
если по какойто причине у вас больше двух коллекций задействовано в выборке - то стоит думать над изменением структуры бд
Daniyar
Daniyar
const ArrivalSchema = new Schema({
product: {
type: Schema.Types.ObjectId,
required: [true, 'Продукция должна быть указана'],
ref: 'Product'
},
branch: {
type: Schema.Types.ObjectId,
required: [true, 'Филиал нахождения продукции должен быть указан'],
ref: 'Branch'
},
color: {
type: Schema.Types.ObjectId,
required: [true, 'Цвет продукции должен быть указан'],
ref: 'Color'
},
quantity: {
type: Number,
required: [true, 'Количество прибывшей продукции должен быть указан'],
min: [0, 'Количество не может быть меньше 0']
},
buyPrice: {
type: Number,
min: [0, 'Приобретенная цена не может быть отрицательной']
},
sellPrice: {
type: Number,
min: [0, 'Продажная цена не может быть отрицательной']
},
minSellPrice: {
type: Number,
min: [0, 'Минимальная продажная цена не может быть отрицательной']
},
discount: {
type: Number,
default: 0,
min: [0, 'Акционная скидка не может быть меньше 0']
},
comment: {
type: String,
maxlength: [1000, 'Длина комментария должна быть меньше 1000 символов']
},
arrivedAt: {
type: Date,
required: [true, 'Дата прибытия продукции должна быть указана']
},
readyForSell: {
type: Boolean,
default: false
}
}, {
timestamps: true
});
Daniyar
const ArrivalSchema = new Schema({
product: {
type: Schema.Types.ObjectId,
required: [true, 'Продукция должна быть указана'],
ref: 'Product'
},
branch: {
type: Schema.Types.ObjectId,
required: [true, 'Филиал нахождения продукции должен быть указан'],
ref: 'Branch'
},
color: {
type: Schema.Types.ObjectId,
required: [true, 'Цвет продукции должен быть указан'],
ref: 'Color'
},
quantity: {
type: Number,
required: [true, 'Количество прибывшей продукции должен быть указан'],
min: [0, 'Количество не может быть меньше 0']
},
buyPrice: {
type: Number,
min: [0, 'Приобретенная цена не может быть отрицательной']
},
sellPrice: {
type: Number,
min: [0, 'Продажная цена не может быть отрицательной']
},
minSellPrice: {
type: Number,
min: [0, 'Минимальная продажная цена не может быть отрицательной']
},
discount: {
type: Number,
default: 0,
min: [0, 'Акционная скидка не может быть меньше 0']
},
comment: {
type: String,
maxlength: [1000, 'Длина комментария должна быть меньше 1000 символов']
},
arrivedAt: {
type: Date,
required: [true, 'Дата прибытия продукции должна быть указана']
},
readyForSell: {
type: Boolean,
default: false
}
}, {
timestamps: true
});
делаю query по property branch и color
Daniyar
как поступить?
Daniyar
Nick
а зачем?
Nick
почему вы реляционку перекладываете на жсон?
Daniyar
Daniyar
что за реляционка?
Daniyar
так что надо делать? со схемой проблема?
Nick
у вас зачемто цвет ссылкой указан а не значением
Daniyar
ну цвет.. тоже отдельная схема
Nick
зачем?
Nick
что это вам дает
Daniyar
для отдельного использования
Nick
в монге нет констрейнтов, поэтому удаление цвета поломает вам консистентность
Daniyar
для удаления есть чеккер
Daniyar
если он используется его нельзя удалить
Nick
вообще если хотите удобно выбирать данные, то надо менять структуру и вносить данные внурь вашей структуры
Илья
mongorestore -d db --gzip staging
пытаюсь подключить дамп базы из 3т
2020-05-27T13:17:20.590+0300 don't know what to do with file "staging/workflows.json", skipping...
получаю ошибку на каждый файл. что я делаю не так ?
база должна автоматически создаваться при этой команде или надо её как-то инициализровать ?
Daniyar
Илья
пробовал без —gzip тоже
Илья
Nick
Daniyar
по-любому отдельная схема нужна же? нет?
Nick
Илья
или просто папку указать ?
Илья
открыл уже)
Kirill
Daniyar
Nick
и что там?
Daniyar
но для этого я и добавил в parent colorTitle
Daniyar
автоматом при создании
Nick
что там пишется? название цвета или еще чтото
Daniyar
по сути да... ключевое значение по которому будет происходить поиск
Nick
вот вы его и должны указывать в качестве ссылки на цвет, а не id
Daniyar
в смысле... вместо object id могу дать какой-то стринг?
Nick
да
Daniyar
да
не знал... надо посмотретб
Nick
и тогда вы в выборке можете указывать ваш title
Nick
а populate уже использовать потом на выбранных доках
Nick
и по аналогии с бренчем и продуктом
Nick
хотя с продуктом не факт что так поулчится
Илья
https://docs.mongodb.com/manual/reference/program/mongoimport/
так и не понял как сделать правильно, у меня папка с json коллекциями получилась на экспорте
mongoimport -db staging/
2020-05-27T13:28:08.360+0300 no collection specified
2020-05-27T13:28:08.360+0300 using filename 'staging' as collection
2020-05-27T13:28:08.395+0300 connected to: mongodb://localhost/
2020-05-27T13:28:08.398+0300 Failed: error processing document #1: read staging/: is a directory
2020-05-27T13:28:08.399+0300 0 document(s) imported successfully. 0 document(s) failed to import.
Daniyar
Илья
мне говорили что вообще можно в папку с монго перетащить её и заработает бд когда сервис запустится, это так ?
Sebastian
Привет всем, кто-нибудь связывал mongodb с telegram?
Sebastian
Я хочу получать данные mongoDB в телеграмме
Viktar
Напишите бота, который будет смотреть в базу и присылать вам в телеграм
Sebastian
Sebastian
кто-то сделал это и это работает?
Sebastian
webhook
Daniil
webhook
Сформулируйте задачу более конкретно, в чем у вас проблема?
Sebastian
на самом деле лучше указать, что я хочу сделать
Sebastian
У меня есть база данных mongoDB, и я хочу получать телеграмму каждый раз, когда появляются новые данные
Daniyar
используйте telegraf js
Daniyar
на сервере стартуете бот
Daniyar
и просто bot.sendMessage после создания дока
Sebastian
так что, если я могу это сделать
Daniyar
Sebastian
сделайте)
Это хорошая идея, выполнимо или нет?
Sebastian
Спасибо за ответы
Daniyar
Daniyar
поизучайте telegraf js... там вполне адекватная документация
Sebastian
Я думал, что телеграф JS был не так
Sebastian
215/5000
webhook - вы передаете свой URL на сервер Telegram, а когда приходит новое сообщение - вам будет отправлено сообщение
опрос - каждые n секунд вы делаете запрос на сервер, и он отвечает вам доступными данными.
Sebastian
Я думал, что это были способы
Daniyar
вы только усложняете себе задачу
Daniil
Daniil
только запись
Daniil
поэтому polling/webhook вам не нужны