Kenya-West
19.05.2018
15:38:19
Дороу! Почему Mongoose сохраняет документ с пустыми полями? Фронт на Angular, бек на Express + Mongoose
Это модель в бэкенде. Она описывает те же поля, что и во фронтенде
const User: mongoose.Model<mongoose.Document> = mongoose.model("User", new mongoose.Schema({
id: Number,
firstName: String,
lastName: String,
middleName: String
// + 100500 полей
}));
А вот как он его сохраняет:
app.post("/addUser", (req, res) => {
let user: mongoose.Document = new User();
user.save(req.body, (err, product) => {
console.log(err);
});
});
В req.body передается объект из фронтенда ровно с теми же полями, описанными в модели. Но скрипт сохраняет в БД абсолютно пустые поля. Что делать?
Бек и фронт общаются по REST. body-parser установлен.
Вот здесь в строке let user: mongoose.Document = new User(); надо в скобках написать req.body!
Voskresus
19.05.2018
18:48:16
Надесю все встали, у нас сегодня уважаемые люди в чате
Alexandr
20.05.2018
00:07:39
Google
Voskresus
20.05.2018
06:36:55
Алексей
20.05.2018
09:18:10
парни из монги выкатили пакеты для 9-ого дебиана. но пакеты не пакеты.
Maxim
20.05.2018
12:39:50
Привет, есть интсрументы для проектирования модели данных, типо такого?
Nick
20.05.2018
12:43:52
а это что за инстурмент?
Denis
20.05.2018
12:44:36
Это просто картинка с доки монгодб
Nick
20.05.2018
12:44:49
хех
Maxim
20.05.2018
12:45:25
не знаю, просто картинка с сайта MongoDB
попробовал, такое можно в draw.io нарисовать
Nick
20.05.2018
12:48:11
а какая цель вообще?
Maxim
20.05.2018
12:48:48
просто нарисовать модель данных для проектирования, а потом код писать уже
думал может специализированный инструмент есть
yopp
20.05.2018
12:50:35
Используйте любой UML редактор
Google
Liberty
20.05.2018
12:53:42
Pavel
20.05.2018
13:08:24
привет всем, можно как то в aggregate поменять поле с string на int ?
те, конвертировать
yopp
20.05.2018
13:17:47
https://jira.mongodb.org/browse/SERVER-33510
https://jira.mongodb.org/browse/SERVER-32784
Оооо. Закрыли таки
Nick
20.05.2018
13:35:00
Эт че теперь можно будет даблы в инты трасформить
yopp
20.05.2018
13:36:03
Nick
20.05.2018
13:36:23
Которые возвращают дабл
yopp
20.05.2018
13:37:33
Эм. Разве?
Nick
20.05.2018
13:38:30
Сейл выдает дабл точно, по крайней мере на 3.4 было так гдето полгода назад
Пришлось в коде конвертить с проверкой типа
yopp
20.05.2018
13:41:10
Пусть или доку поправят или логику
В 6.0 может поправят!
Илья
20.05.2018
14:51:48
Доку.
Viktor
21.05.2018
06:22:54
@dd_bb у тебя есть какие-то контакты с монго тимой, чтобы пнуть их посмотреть ишью и пулреквест принять?)
как-то раз бомбил им твиттер, не помогло
Сергей
21.05.2018
06:34:19
Ребят можете подсказать как сделать выборку массива у определенного объекта, который также лежит в массиве объектов? то есть 3 уровня вложенности и нужно у последнего уровня вложености взять массив?)
Google
Сергей
21.05.2018
07:19:23
Живчики, кто поможет с проблемой? t.me/MongoDBRussian/24645
?
Nikita
21.05.2018
10:22:23
всем привет, а подскажите пожалуйста, обязательно нужны такие страшные _id=5b019fe342b519001a0f44fc в бд, или можно вместо них самому создавать id 1,2,3... ?
Nick
21.05.2018
10:23:45
можно, это зависит от ваших задач
Gleb
21.05.2018
10:47:24
Nick
21.05.2018
10:47:35
нет
хотя можно извращаться
но тут вопрос какую задачу вы решаете и зачем вам именно целое да еще и возрастающее, почему вам не подходит просто уникальный ключ?
Dmitriy
21.05.2018
10:49:38
Nikita
21.05.2018
10:53:56
хочется в url отображать id сущности, как в вк id юзеров, например
а дефолтные _id монги уродски смотрятся
а если у записи в бд не будет никаких уникальных полей, но будет комбинированный ключ, например houseId и просто id, по отдельности они не уникальны будут, а вместе - да
Nick
21.05.2018
10:55:05
Nikita
21.05.2018
10:55:16
короч если будет какой то составной ключ, можно не добавлять _id ?)
Nick
21.05.2018
10:55:22
иначе эти красивочсти могут выйти боком
_id обязательное поле
yopp
21.05.2018
11:01:11
Denis
21.05.2018
11:01:31
Но длина ссылки играет роль
yopp
21.05.2018
11:01:41
Делать цифровые _id в монге — выйдет боком
Google
Denis
21.05.2018
11:02:49
Это да, согласен
yopp
21.05.2018
11:03:15
Хотите делать короткие ссылки — заводите у себя сокращаетель ссылок, и там где люди могут шарить контент давайте им короткие ссылки. В остальном — забейте.
Красота ссылок волнует только разработчиков. Пользователей она никогда не волновала и вряд ли будет
Длинна ссылки тоже преувеличенная проблема. Это касается только небольшого количества сервисов
Dmitriy
21.05.2018
11:05:30
Можно брать getTimestamp из objectID и затем из даты получать UNIX timestamp. Вот тебе и цифровой id
Nick
21.05.2018
11:38:31
Dmitriy
21.05.2018
11:39:32
Nick
21.05.2018
11:41:33
Ну не знаю как вы, но я видел что и наносекунды дублируются не то что милисеки
И закладывать на уникальность по времени можно только при соблюдении кучи условий
Dmitriy
21.05.2018
11:57:33
yopp
21.05.2018
12:09:13
И вы снова изобрели ObjectID
ObjectID можно немного сократить если из base16 его перевести в urlsafe base32
Nick
21.05.2018
12:12:21
Denis
21.05.2018
12:22:24
А почему закон Мёрфи со стандартным ObjectID не работает в таком случае?)
Там же тоже есть вероятность коллижена
Nick
21.05.2018
12:23:00
за это отвечает драйвер монги а не вы
поэтому не требуется самостоятельно организовывать придумывание способов обхода всяких проблем, когда они уже итак решены стандартными средствами
yopp
21.05.2018
12:24:28
Nick
21.05.2018
12:27:33
а что за четввертый закон?
Google
yopp
21.05.2018
12:28:21
Из того-же коллоквиума что и закон Мёрфи ;)
Dmitriy
21.05.2018
13:02:28
Nick
21.05.2018
13:06:00
тут все просто - либо ваши данные и логика их обработки допускают это и вы делаете так, либо не допускают и вы делаете по другому. я предпочитаю готовиться к пессимистическому сценарию и закладывать на как минимум тупо остановку софта при получении чегото неожиданного, даже если цена простоя большая, то цена поврежденных данных или ее восстановления может быть в разы больше
yopp
21.05.2018
13:30:27
Ты несколько преувеличиваешь проблему. Для _id же есть уникальный индекс. Худшее что может случится — при записи вернётся ошибка о наличии дубликата
Что вообщем-то может и с objectid случиться, на больших высоконагруженных кластерах.
Nick
21.05.2018
13:34:50
да преувеличиваю и это осознанно, с такой позицией проще сразу заложитсья на какието проблемы и придумать способы их обхода, даже если оно случится раз-два за все время эксплуатации, а то и вообще ни разу