用Create Mongo Express简化您的Express.js和MongoDB开发
#node #express #mongodb

简介:

express.js是一个流行的框架,用于在node.js中构建Web应用程序。它为开发服务器端应用程序提供了一种简约且灵活的方法。

但是,建立一个具有MongoDB集成的Express.js项目可能是一项繁琐且耗时的任务。那就是Create Mongo Express进行救援的地方!在本文中,我们将探讨如何创建Mongo Express可以简化您的Express.js开发工作流程并提高您的生产力。

Create Mongo Express是一种简单而强大的 cli 工具,可自动使用MongoDB连接的Express.js应用程序设置。使用此工具,您可以快速生成一个完全配置的express.js项目,并配有基于file的预配置路由,并与mongodb无缝集成。

安装

要安装软件包,请确保您在计算机上安装了Node.js和NPM。然后,运行以下命令:

npx create-mongo-express project-name

接下来,您将被要求提供MongoDB Uri。

Enter the MongoDB URI:

确保您的mongoDB Uri采用以下格式:

mongodb+srv://mongoDbUser:mongoDbUserPass@cluster0.s938843o0.mongodb.net/databaseName?retryWrites=true&w=majority

运行服务器

设置完成后,导航到项目文件夹:

cd project-name

接下来,通过运行以下命令来启动服务器:

npm run dev

您的服务器默认情况下将在端口3500上运行。

如果您想更改端口,则可以修改位于根文件夹中的server.js文件。

创建新路线

要在API文件夹中创建新路由,请按照以下步骤:

在项目文件夹中,找到 api 文件夹。这是您可以添加自定义路线的地方。

创建一个带有描述性名称的新文件。例如,如果要创建用于管理产品的路由,则可以在 api 文件夹中创建一个名为products.js的文件。

打开新创建的文件,并添加必要的代码以定义您的路由。这是一个例子:

const express = require('express');
const router = express.Router();
const Customer = require('../model/Customer');

// GET /api/customers
router.get('/', (req, res) => {
  res.send('This is the /customers route');
});

// GET /api/customers/:id
router.get('/:id', (req, res) => {
  console.log(req.params.id);
  res.send(`This is the /customers/${req.params.id} route`);
});

// POST /api/customers
router.post('/', async (req, res) => {
  const { first_name, last_name, email, phone } = req.body;

  if (!email || !first_name || !last_name || !phone) {
    return res
      .status(400)
      .json({ message: 'Please fill out all the required fields' });
  }

  try {
    const duplicateCustomer = await Customer.findOne({ email }).exec();

    if (duplicateCustomer) {
      return res.status(409).json({
        message: `Another user with email ${email} already exists, login instead`,
      });
    }

    // Create and store new user
    const result = await Customer.create({
      first_name,
      last_name,
      email,
      phone,
    });

    return res.status(200).json({
      message: 'User created successfully',
      first_name: result.first_name,
      last_name: result.last_name,
      email: result.email,
      phone: result.phone,
    });
  } catch (error) {
    res.status(500).json({ message: error.message });
  }
});

module.exports = router;

路线出口

确保您的所有路线都像下面一样正确地导出,否则您将显示404页。

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

// GET /api/products
router.get('/', (req, res) => {
  res.send('This is the /products route');
});

module.exports = router;

根据您的要求自定义路线逻辑。您可以从数据库中检索数据,创建新记录,更新现有记录或根据您定义的HTTP方法和路由路径删除记录。

保存文件。

现在,您的新路由可以在Express Server中提供。您可以使用定义的路径路径访问它。例如,如果您创建了如上图所示的products.js路由,则可以访问/api/products/api/products/:id等的路由端点。

就是这样!您已经成功地在API文件夹中创建了一条新路由。随意添加更多路线并根据您的应用程序的需求进行自定义。

猫鼬模型

您可以在根级别的模型文件夹中添加自己的猫鼬型号。这是一个例子:

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

const customerSchema = new Schema({
  first_name: String,
  last_name: String,
  email: String,
  phone: String,
});

module.exports = mongoose.model('Customer', customerSchema);

更改路线结构

如果要将路由更改为其他东西而不是默认的/api,则可以在根级别的server.js文件中更改此路由。

// File-based routing
function registerRoutes(file) {
  const routeName = path.parse(file).name;
  const routePath = path.resolve(apiFolderPath, file);
  const routeModule = require(routePath);

  if (typeof routeModule === 'function') {
    const route = `/api/${routeName}`;
    app.use(route, routeModule);
    console.log(`Route created: ${route}`);
  } else {
    console.error(`Invalid route file: ${file}. Skipping...`);
  }
}