.forEach () в E JS и Mongoosse - PullRequest
       6

.forEach () в E JS и Mongoosse

0 голосов
/ 29 марта 2020

Я пытаюсь показать каждого автора, который хранится в файле mon go db, в файле e js. Моя идея состояла в том, чтобы перебрать каждого автора с помощью Model.find ({})

authorController. js

const express = require('express')
const router = express.Router()
const Author = require('../models/Author')


router.get('/', async (req, res) => {
    try{
        const authors = Author.find({})
        res.render('authors/index', {authors: authors})
    } catch(error) {
        res.redirect('/')
    }
})

index.e js

<h1>Search authors</h1>

<form action="/authors" method="GET">
    <label>Name</label>
    <input type="text" name="name">
    <button type="submit">Search</button>
</form>

<% authors.forEach(author => { %>
    <div class="author"><%= author.name %></div>
<% }) %>

Модель Author

const mongoose = require('../database')

const AuthorSchema = mongoose.Schema({
    name: {
        type: String,
        required: true,
    }
})

module.exports = mongoose.model('Author', AuthorSchema)

Возникает ошибка: авторы.forEach не является функцией

Я немного прочитал и думаю, что это происходит, потому что я не могу перебрать объект, использующий forEach (). Как я могу это сделать?

1 Ответ

2 голосов
/ 29 марта 2020

В вашем коде (внутри функции asyn c) следующая строка:

const authors = Author.find({});

Должно быть так:

const authors = await Author.find({});
...