0
votes

Rebuilding a previous project and trying to learn node and CRUD functions with mongodb. i have a connection to my database and a separate server.js file with mongoose and express.

in server.js the server runs correctly im just not sure how to view my data on the page

here is my code:

server.js


const express = require('express');
const mongoose = require('mongoose');
const app = express();
const ejs = require('ejs');


app.set('view engine', 'ejs');


mongoose.connect("mongodb connection string here");

const recipeSchema = {
    title: String,
    ingredients: Array,
    instructions: String,
    picture_link: String
}

const Recipe = mongoose.model('Recipe', recipeSchema);

app.use(express.static('public'));

app.get('/', function(req, res) {
    res.render('index', {});
});

app.get('viewrecipes', function(req, res){
    Recipe.find({}, function(err, recipes) {
        res.render('viewrecipes', {
            recipesList: recipes
        })
    })
});

app.listen(4000, function() {
    console.log('server is running');
});

viewrecipes.ejs file

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <link rel="stylesheet" href="css/style.css" type="text/css">
    <title>Document</title>
</head>
<body>
  <nav class="navbar navbar-expand-lg navbar-light bg-light ">
    <div class="container-fluid">
      <a class="navbar-brand" href="/">Recipe Fix!</a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse justify-content-end" id="navbarNav">
        <ul class="navbar-nav ">
          <li class="nav-item">


            <a class="nav-link" id="submit-recipe"  href="#">Submit a Recipe</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="/viewrecipes">View Recipes</a>

          </li>
          <form class="d-flex">
            <input class="form-control me-2" type="search" placeholder="Search for recipes" aria-label="Search">
            <button class="btn btn-outline-success" type="submit">Search</button>
          </form>
        </ul>
      </div>
    </div>
  </nav>
  <%recipesList.forEach(recipe => {%>
    <div class="card" style="width: 18rem;">
      <img src="..." class="card-img-top" alt="...">
      <div class="card-body">
        <h5 class="card-title"><%= recipe.title %></h5>
        
      </div>
      <ul class="list-group list-group-flush">
        <li class="list-group-item"><%= recipe.ingredients %></li>
        
      </ul>
      <div class="card-body">
        <a href="#" class="card-link"><%= recipe.instructions %></a>
      
      </div>
    </div>
    <%})%>  
      <script src="core.js"></script>
      <script src="server.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>

did you get data befor res.render?mohammad Naimi
yes i can access the viewrecipes pageVileBlood86