[Homework] ExpressJS Development - MongoDB and Mongoose Exercises

[Homework] ExpressJS Development - MongoDB and Mongoose Exercises

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

[Homework] ExpressJS Development - MongoDB and Mongoose Exercises

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

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

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

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

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

'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 1332 Точки

Ами при теб проблема може би е, че отваряш кънекция към базата толкова пъти, колкото пъти извикваш функцията 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