Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

a.angelov avatar a.angelov 1316 Точки

[Homework] ExpressJS Development - MongoDB and Mongoose Exercises

В първите години на СофтУни имаше практика да се споделят решения от домашните. Мисля, че това беше нещо много ценно и полезно за всички.

В тази връзка споделям линк към моите решения на първото упражнение, които със сигурност на се много правилни. Надявам се и други хора да покажат своите, както и да получа обратна връзка - къде бъркам и какво може да се промени/подобри. Всички печелим от това :)

Решенията: MongoDB and Mongoose Exercises

Тагове:
4
Express.js Web Development
ivanA123 avatar ivanA123 7 Точки

Супер, много полезно, благодаря ти много

0
Nikola_Andreev avatar Nikola_Andreev 671 Точки

Ето и моят вариант, доста по опростен е. https://github.com/Nikola-Andreev/ExpressJS/tree/master/MongoDb  Единственото което не успях да направя до момента е снимките и таговете да са ми по схема. Пробвах по няколко начина , но все ми хвърля едни огромни грешки които не мога да проследя. Благодаря че си споделил решението, само не резбирам защо в instanode-db има толкова много неща smiley.

1
a.angelov avatar a.angelov 1316 Точки

Ще ти кажа защо има толкова много неща smiley

За задача 3 примерно:

Първо проверявам в базата дали съществуват таговете с подадените имена - ако не съществуват ги създавам, ако съществуват просто ги добавям в масива. Идеята е да не пълня базата с повтарящи се тагове.

След това като запиша новия Image минавам през таговете и им добавям Image-а.

По т.4:

По задание таговете имат пропърти images - затова го правя на обратно спрямо твоят код - намирам тага и показвам неговите images.

 

По т.5:

Не съм проверявал, но какво би станало ако в твоят вариант на домашно не подадеш на instanodeDb.filter - after, before или results параметрите? Аз правя проверки за всеки от тези параметри и съответно заявката според това дали го има или няма.

Разбира се, за повечето неща трябва да си направил правилно схемите на моделите. Аз също доста се полутах как да стане, защото от презентацията не ми стана много ясно как да направя пропърти масив от модели...

0
17/10/2016 20:37:40
Krzysztof avatar Krzysztof 0 Точки

Мерси! 

Помогна ми да се справя с задача !

0
evgenikolov avatar evgenikolov 304 Точки

Здравейте, разгледах вашите решение, но и вие като мен закоментирате всяка една операция към базата понеже иначе хвърля 

'Trying to open unclosed connection. mongoose' или нещо подобно.

Така и не разбрах как да затварям асинхронно connection-a след операциите за да се изпълняват следващите. Не знам дали изобщо се прави така.

Ако някой по-опитен знае как се случва това да сподели ако може. :)

function addImage (data) {
  let db = mongoose.connect(connection)
  db.then(() => {
    new Image({
      imageUrl: data.url,
      createdOn: new Date(),
      description: data.description
    }).save()
  })
  //db.disconnect()
}

addImage(
{ url: `https://some.url`,
  description: `such cat much wow`,
  tags: [`catstagram`] })

addImage(
{ url: `https://other.url`,
  description: `such cat much wow`,
  tags: [`catstagram`] })

db.disconnect() не върши работа в случая

 

0
18/10/2016 20:04:02
a.angelov avatar a.angelov 1316 Точки

Ами при теб проблема може би е, че отваряш кънекция към базата толкова пъти, колкото пъти извикваш функцията addImage. Пробвай да изнесеш mongoose.connect(connection) извън функцията addImage, както аз съм го направил в index.js файла...

1
VenelinGrozev avatar VenelinGrozev 130 Точки

Като инсталираш express после ще имаш само веднъж mongoose.connect() в app.js файла. Нали идеята е това да е някакъв сайт, който да е жив през цялото време и когато получи request да може да го изпълни веднага.

Ето един пример, домашното го направих с express - https://github.com/veneling/ExpressJS-tryouts

2
mhl.yo avatar mhl.yo 10 Точки

Аз се сблъсках със същия проблем, много заявки, някои от които с еднакви данни в много малък период от време. Говоря за първоначалните данни - таговете, след това е ок. Заобиколих проблема с setTimeout, но реално решение не открих.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.