Как я могу передать `app`, чтобы я мог создавать конечные точки в файле model.js? - PullRequest
0 голосов
/ 18 сентября 2018

Я ноб. Я хочу иметь возможность создавать конечные точки из файлов моей модели. Я думаю, что если я смогу передать app, я могу просто добавить конечные точки прямо оттуда. Я использую Sequelize. Одна из моих моделей выглядит примерно так:

const user = function (sequelize, DataTypes) {
const User = sequelize.define('user', {
       id: {
           type: DataTypes.STRING,
           primaryKey: true,
           unique: true
       },
       name: {
           type: DataTypes.STRING,
       },
       email: {
           type: DataTypes.STRING,
       },
   });


   return User;
};

module.exports = user;

Я создаю app с var app = express(); в другом файле server.js.

  const Sequelize = require('sequelize');

  const sequelize = new Sequelize('carswaddle', 'kylekendall', 'password', {
    dialect: 'postgres',
  });

  const models = {
    User: sequelize.import('./user'),
    Service: sequelize.import('./service'),
  };

  Object.keys(models).forEach(key => {
    if ('associate' in models[key]) {
      models[key].associate(models);
    }
  });

  models.sequelize = sequelize;
  models.Sequelize = Sequelize;

  module.exports = models;

Так я использую Sequelize.

P.S Любые предложения о моем коде будут очень приветствоваться ..

1 Ответ

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

Вы можете следить за этим блогом, чтобы начать работу с лучшими практиками и структурой файла.

Ваша точка входа в приложение должна быть определена следующим образом:

// This will be our application entry. We'll setup our server here.
const http = require('http');
const app = require('../app'); // The express app we just created

const port = parseInt(process.env.PORT, 10) || 8000;
app.set('port', port);

const server = http.createServer(app);
server.listen(port);

В этом только вы начинаетеэкспресс сервер.

https://scotch.io/tutorials/getting-started-with-node-express-and-postgres-using-sequelize

и ваши структуры папок для приложения должны выглядеть следующим образом, вы можете настроить его по своему усмотрению, но он должен быть похож на этот

├── app.js
├── bin
│   └── www
├── package.json
└── server
    ├── config
    │   └── config.json
    ├── migrations
    ├── models
    │   └── index.js
    └── seeders

теперь папка моделей для вас будет содержать все модели баз данных для вас.и вы должны смонтировать все ваши маршруты в файле app.js.Вот пример кода для монтирования ваших маршрутов

const express = require('express');
const logger = require('morgan');
const bodyParser = require('body-parser');

const app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// Require our routes into the application.
require('./server/routes')(app);
app.get('*', (req, res) => res.status(200).send({
  message: 'Welcome to the beginning of nothingness.',
}));

module.exports = app;

Где ваша папка маршрутов будет выглядеть примерно так или вы можете определить структуру вложенных папок для этого, минуя экспресс-маршрутизатор снизу вверх.

и для написания контроллеров необходимо импортировать модели в контроллер.

Вы можете создать пример объекта todo следующим образом.мы экспортируем команду create для использования в маршрутах.

const Todo = require('../models').Todo;

module.exports = {
  create(req, res) {
    return Todo
      .create({
        title: req.body.title,
      })
      .then(todo => res.status(201).send(todo))
      .catch(error => res.status(400).send(error));
  },
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...