Как включить модель в узел-экспресс JS? - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать проект с таблицей продуктов, я создал схему, но когда я пытаюсь включить модель в свой контроллер, она выдает ошибку.

Из базового проекта Express я создал папки контроллеров и моделей.

Мой контроллер,

var mongoose = require('mongoose'),
Products = require('../models/products.model.js');

 exports.addProduct = function( req, res ) {
 var params = req.body;

 var productsModel = new Products(params);
 productsModel.save(function (error, response) {
   if (error) {
  return res.end(error);
  }
  if (response) {
     res.json(response);
  }
});
};

Модель

var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;

const productSchema = new Schema({
author: ObjectId,
name: String,
 description: String,
 price: Number,
quantities_available: Number
});
mongoose.model('products', productSchema, 'products');

ошибка

TypeError: Products is not a constructor

Файловая структура,

File structure:
models
   products.model.js
controllers
   products.controller.js
app.js

1 Ответ

0 голосов
/ 25 августа 2018

В вашей модели измените эту строку:

mongoose.model('products', productSchema, 'products');

К этому

module.exports = mongoose.model(‘Product’, productSchema);

В вашем контроллере:

var mongoose = require('mongoose'),
 Product = require('../models/products.model.js');

 exports.addProduct = function( req, res ) {
 var params = req.body;

 var productsModel = new Product(params);
 productsModel.save(function (error, response) {
     if (error) {
       return res.end(error);
     }
     else {
       res.json(response);
     }
  });
 }; 
...