Oleg
ахаха
Viktor
нет, я понял кейс
Oleg
репостить все сообщения что ли :)
Viktor
но я не понимаю зачем путь-то
Viktor
ну ладно, я реактивные энтити не сериализовал, может есть какая-то необходимость в этом
Oleg
чтоб сделать подписчика, который складывал бы информацию "по этому пути надо обновить значение"
а дальше апдейтом проходить по набору таких данных и апдейтить
Oleg
то есть в коде выходит работы нет с дб
ты просто пишешь логику работы с моделями, а потом вызываешь условный Apply, если всё хорошо
Oleg
и не надо помнить куда что надо проапдейтить
Oleg
мы это решили, просто отложенными подписками с захардкоженными путями
Viktor
а есть код сэмпл? интересно аж стало
Viktor
Viktor
как время будет*
Oleg
+
yopp
rdcm
+1
yopp
это совершенно две разные отвественности
Oleg
он не отвечает за события, а просто создаёт подписчика, можно считать это частью десериализуемого объекта
yopp
bson это представление данных, а не объект.
yopp
с чего вдруг данные должны что-то создавать
Oleg
Oleg
а шарповой модели, которая получается из бсона
yopp
мы говорим о десериализованном документе, документ это не модель. документ это данные
yopp
если мы про модель как интерфейс говорим
Viktor
Viktor
Отсюда и приседание с сериализацией
yopp
так и я об этом, это смешание отвественностей
yopp
попытка из драйвера сделать ODM
yopp
задача драйвера засунуть и высунуть данные, откуда эти данные появились и куда они попадут, это вообще не проблема драйвера
Андрей
народ
Андрей
подскажите пожалуйста
Андрей
есть два сервера. mongo 3.4
Андрей
я настроил между ними repliset
Андрей
как сделать , чтоб при ребуте слейв становился мастером
Андрей
у меня сейчас он переключается только если явно сделать. db.shutdownServer()
Oleg
попытка из драйвера сделать ODM
драйвер это драйвер.
это попытка поверх него написать ODM под конкретные нужды
проблема, что на текущем апи нельзя узнать в процессе десериализации всё дерево, хотя десериалиазатор в глубине знает, потому что идёт по всем дочерним документам
Oleg
на шарпах нет mongoose и прочего
yopp
yopp
это зона отвественности драйвера. вам драйвер отдал структуру, вы после этого с ней и работаете
yopp
хотите дерево построить? пройдите по структуре
Oleg
Андрей
yopp , можешь подсказать как решить проблему? описал выше
Oleg
именование полей не совпадает с именованием их же в документах
путь для апдейта на этих данных не выстроить
yopp
Андрей
спс попробую
Bandikoot
yopp
Oleg
эм. название клюечей в документе после десериализации не совпадает?
во первых в шарпах нейминг просто другой
то что было key становится Key
могут отличаться и полностью названия
вдобавок, что бы выстраивать по готовой структуре все связи, это надо написать кучу кода с рефлексией, что выглядит очень объемно и нечитабельно с потенциальной возможность ошибиться, потому что компилятор не может проверить нормально эти конструкции
в то время в десериализаторе это добавило бы условно пару строчек только
данные бы просто превратились в пару данные + метаданные, что в принципе никак не нарушает смысл десериализации
от того что не произошло int -> int, а int -> обертка над int; десериализатор не стал отвечать за какие-то события и что-то еще. он просто представил данные в каком-то более комплексном виде
yopp
в шарпе нет ассоциативных массивов со строковым ключом?
Oleg
есть конечно
yopp
тогда откуда key -> Key?
Oleg
так работает десериализатор
ты говоришь, что хочешь документ по этому пути представленный вот таким типом
class Scheme {
public int SomeValue { get; set; }
public string SomeString { get; set; }
}
Oleg
веселье начинается когда у тебя не int, а другой тип OtherScheme
Oleg
и такая вложенность длинная
yopp
это не десериализация, это маппинг
yopp
мрак и ужас, что это воткнули в драйвер
yopp
голый bson конечно
Vova
Ничего не знаю, пишу с шарповым драйвером и всё отлично
yopp
страдаете за чужие грехи
Oleg
вот над голым бсоном пришлось бы писать код, который бы нуждался в документировании и остальном
чисто рациональный взгляд на времязатраты
Oleg
yopp
ничего плохого в маппере нет, но это не отвественность драйвера
yopp
драйвер заканчивается на BsonDocument
yopp
потому что маппинг документов в классы, это уже ODM
Vova
У меня всегда свойства поля с большой буквы в классах и имена пишутся с большой в базу, не знаю что там за проблемы с именованием
yopp
потому что там появляется managed lifecycle, а это вообще не к драйверу
yopp
это повод завести тикет в жире, в котором начать обсуждение чтоб маппер вытащили из драйвера
yopp
если его там ещё нет
Viktor
Viktor
если не вешать [BsonElement("<customNameHere>")] то все ок
Oleg
Viktor
да даже с BsonElement'ами можно построить карту мапинга
Oleg
так я не говорил нельзя
Oleg
:)
Viktor
ну в смысле можно построить такую, которая будет работать быстро :)
Viktor
Viktor
как в итоге решили? обычными мапперами?