Pro.find не является ошибкой функции при экспорте модели mongoose - PullRequest
0 голосов
/ 06 сентября 2018

Это мой server.js, где я могу запустить код для инициализации моего сервера через localhost: 7000. И маршрут, по которому я бегу, это product.js:

Путь продукта:

const express = require('express');
const router = express.Router();

const Pro = require('../model/Product');

router.get('/', (req, res) => {
    Pro.find()
    .sort({ entrydate: -1 })
    .then(product => res.json(product));
});
router.post('/product', ( req, res ) => {
    res.send('Posting a response')
});
module.exports = router;

Который получает ошибку:

TypeError: Product.route не является функцией

Модель продукта:

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

const ProductSchema = new Schema({
  // Objects and Properties are here
});

const Product = mongoose.model('products', ProductSchema);
module.exports = { Product };

Как мне выбраться из этого беспорядка?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Узнайте о деструктуризации в javascript. Вы можете справиться с этим

const {Product} = require('../model/Product'); //recommended

или

const any_variable_name = require('../model/Product').Product;

module.exports = variable_name также поможет, но если у вас есть несколько переменных для экспорта, вам придется писать всю эту строку несколько раз. тогда как module.exports = {v1,v2,v3...vn} будет более читабельным

0 голосов
/ 07 сентября 2018

Вы экспортируете Product в объекте:

module.exports = { Product };

Поэтому, когда вы пытаетесь найти продукт, вы делаете следующее:

{ Product }.find();

Что, вероятно, то, что вы не хотите. Вместо этого:

module.exports = Product;

или вместо создания Product переменной:

module.exports = mongoose.model('products', ProductSchema);

Оба должны экспортировать только модель products и решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...