[E2E JS APPS] Домашно MongoDb/Mongoose


7

Здравейте,

Нека тук всеки сподели своето домашно ; )

Ето тук е моето.

Аз имам един конкретен въпрос по задачата. Какъв е най-добрият начин да връщаме резултат от методите, които са в chat-db модула, тъй като голяма част от функционалността разчита на callback функции.

Примерно във функцията, която трябва да върне съобщенията по дадени двама потребителя на мен лично ми се наложи първо да намеря всеки в колекцията от потребители и после да направя търсене в колекцията със съобщения, тъй като съобщенията са вързани към потребителите по ObjectId и искам да ги филтрирам по това ObjectId, а не да взимам всички съобщения, после да ги пълня с референцията към потребителите и чак след като ги дръпна да ги филтрирам ръчно. Това се получава от факта, че populate не върши работата на join и следователно не мога да филтрирам по име на изпратил и име на получател.

И сега въпросът е как да върна резултат от всичко това ; ) ?




Отговори



3

Аз го мислих известно време и го направих като теб, с callback, той node-а си е такъв. Наистина става малко грозно с толкова вложени callback-ци, ако някой знае друг начин да каже.

Ето го моето решение, като аз даже не съм го populate-нал (яка дума).


от dimo.petrof (2887 точки)


1
Здравейте,

тъй като е хубаво да има валидация по уникалност на порпърти (username), вместо да се правят методи и да се троуват ексепшъни, най-готино е с плъгина mongoose-unique-validator:
https://www.npmjs.org/package/mongoose-unique-validator

от samardzhiev (167 точки)


0
Аз го направих с callbacks за да се изпълняват заявките последователно. Първо изтривам всички съобщения от базата, след това ако няма потребители създавам двама, разменят си събщения и най-накрая се показват всички съобщения от базата. Така приложението може да се изпълнява много пъти без да се трупат съобщения и потребители.
 

от neutrino (3376 точки)


0

След известна борба с mongoose-а и аз установих че няма културен начин да да се извикват заявките синхронно, а и всъщност няма нужда, тък като това си е нормалния начин на работа на node.

В крайна сметка добавих по един callback на функциите и сега се chain-ват, за да не се опитва да прави съобщение с user-и които все още не са създадени.

Решението.

 


от ivand (862 точки)