.find() не является функцией Nodejs

#javascript #node.js #mongodb #mongoose

Вопрос:

Я работал над проектом, у меня возникла проблема с запросами к схеме. Когда я достигаю своих конечных точек, я получаю сообщение об ошибке TypeError: Menu.find is not a function

Ошибка

 TypeError: Menu.find is not a function
    at index (D:ProjectsPizzaa Ordering AppapphttpcontrollershomeController.js:6:18)
    at Layer.handle [as handle_request] (D:ProjectsPizzaa Ordering Appnode_modulesexpresslibrouterlayer.js:95:5)
    at next (D:ProjectsPizzaa Ordering Appnode_modulesexpresslibrouterroute.js:137:13)........
 

и много Строк

Мой Файл на Сервере:

 const express = require('express')
const app = express()
const ejs = require('ejs') //Engine
const path = require('path')
const expressLayout = require('express-ejs-layouts')
const PORT = process.env.PORT || 3000
    // Database
const mongoose = require('mongoose')


// Database Connection
const url = 'mongodb://localhost/pizza-test';
mongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true, useFindAndModify: true });
const connection = mongoose.connection;
connection.once('open', () => {
    console.log('Database connected...');
}).catch(err => {
    console.log('Connection failed...');
});


// Assets
app.use(express.static(__dirname));

// Set template engine
app.use(expressLayout)
app.set('views', path.join(__dirname, '/resources/views'))
app.set('view engine', 'ejs')

// Routes
require('./routes/web')(app)

app.listen(3000, () => {
    console.log(`Listening on port ${PORT}`);
})

 

web.js файл // Все маршрутизаторы

 const homeController = require('../app/http/controllers/homeController')
const authController = require('../app/http/controllers/authController')
const cartController = require('../app/http/controllers/customers/cartController')

function initRoutes(app) {
    app.get('/', homeController().index)

    app.get('/cart', cartController().index)

    app.get('/login', authController().login)

    app.get('/register', authController().register)
}

module.exports = initRoutes
 

homeControllerFile.js // Код маршрутизатора // req, res

 const Menu = require('../../models/menu')

function homeController() {
    return {
        index(req, res) {
            Menu.find().then((pizzas) => {
                console.log(pizzas);
                return res.render('home', { pizzas: pizzas });
            })
        }
    }
}

module.exports = homeController

 

мой menu.js файл // откуда меню Экспорт

 const mongoose = require('mongoose');
const Schema = mongoose.Schema

const menuSchema = new Schema({
    name: { type: String, required: true },
    image: { type: String, required: true },
    price: { type: Number, required: true },
    size: { type: String, required: true }
});


mongoose.exports = mongoose.model('Menu', menuSchema)

 

Ответ №1:

У вас есть опечатка заменить mongoose.exports на module.exports

Комментарии:

1. Вау.. Большое вам спасибо, я пытаюсь решить эту проблему за последний 1 час. 😍

2. Тогда это хорошо, что вы разместили здесь!