קורס Node.JS שיעור תרגול מונגוס 1


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/nodejs/lessons/40-lab-mongoose-1

היי ינון,

לגבי התרגיל השני בתרגול,

לא ברור לי כיצד לגשת אל מימוש מערך של אנשים שעשו Like לאיזה שהו לינק.
מי הם אותם אנשים?
האם התכוונת (אף שלא כתוב במפורש) לממש גם מנגנון הרשמה למערכת שיתוף הלינקים בטרם יוכל משתמש להוסיף לינק?

הי,
התרגיל הוא המשך של תרגיל 2 מכאן:
https://www.tocode.co.il/bundles/nodejs/lessons/26-express-views-lab

לגבי האנשים לא צריך לנהל משתמשים בצורה מסודרת. מספיק לשים שדה של שם משתמש במסך הגשת הלינק ולשמור במערך את שמות המשתמשים שעשו לייק

היי, לגבי תרגיל 2:
מה הסיבה לכך שאני מקבלת:links is not iterable???


??
מהDB קיבלתי מידע כזה
image
זה הקוד שלי:

    async listLinks() {  
        const links = await Link.find({}).sort({_id: -1 });
        console.log(links);
        return links;
    }
router.get('/',async function(req, res, next) {
    let links;   
    links =await Links.listLinks();     
    res.render('home',{links});
});

     <ul>
        <% for (let l of links) { %>
            <li>
            <p><a href="<%= l.link %>" class="btn btn-primary" role="button"> <%=l.link %></a></p> 
            </li>
          <% } %>
    </ul>```

הי,

יכולה להדביק פה גם את קובץ ה package.json שלך?

הנה:

{
  "name": "nwesproject",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "ejs": "~2.6.1",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongodb": "^5.7.0",
    "mongoose": "^7.4.2",
    "morgan": "~1.9.1"
  },
  "main": "app.js",
  "author": "",
  "license": "ISC",
  "description": ""
}

וגם אשמח להבין מה זה ה__V שיש בDB
תודה

הי,

אז כן אני רואה שאצלך mongoose הוא בגירסה 7 אבל כשהקלטתי את הקורס הייתי על גירסה 5. יכול להיות שמשהו השתנה באיך שזה עובד בין הגירסאות. זה קובץ package.json מהדוגמה שלי:

{
  "name": "36-a-first-mongoose-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "mongoose": "^5.3.12"
  }
}

אנסה להפעיל את הדוגמה על גירסה 7 ואעדכן אם אני מוצא הבדל. במקביל אם את יכולה שלחי לי את כל הפיתרון למייל (בלי תיקיית node_modules, מכווץ בזיפ) ואז אוכל להסתכל גם יותר לעומק על הקוד שכתבת. המייל ynon שטרודל tocode.co.il

הי

טוב זה לא קשור לגירסאות. תיקנתי כמה שגיאות כתיב ועכשיו הקוד עובד. זה הקובץ routes/links:

var express = require('express');
var router = express.Router();
const Link = require('../models/Link');


/* GET links listing. */
router.get('/',async function(req, res, next) {
  const links = await Link.find({}).sort({_id: -1 });
  console.log(links);
  res.render('home',{links});
});


router.post('/', async function(req, res) {
  const l = new Link({link: req.body.link});
  await l.save()
  const links = await Link.find({}).sort({_id: -1 });

  res.render('home', { links });
});


וזה קובץ ה view:

<form method="POST"  action="/news/liks">
<ul>
    <% for (let l of links) { %>
        <li>
         <%= l.linkName %>
           <!-- <button value="like">like</button>
           <button value="dislike">dislike</button> -->
            <% if (l.liks > 0) { %>
                <h2> <%= l.liks %></h2>
              <% } %> 
        </li>
      <% } %>
</ul>
</form>