#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. Тогда это хорошо, что вы разместили здесь!