【问题标题】:Separate express api database from server.js file从 server.js 文件中分离 express api 数据库
【发布时间】:2017-04-09 14:44:19
【问题描述】:

我是 Node.js 的新手,这个问题也是。

我正在使用这个例子,请看下面的这个链接。

https://github.com/sahat/newedenfaces-react/blob/master/server.js

在这个 server.js 文件中,程序员正在调用

mongoose.connect(config.database);

app.get('/api/characters', function(req, res, next) {}

全部在 server.js 文件中

我想保持一切清洁

然后做

server.listen(app.get('port'), function() {}

server.js 文件上,其余的东西在一些不同的文件上,然后导入或填充它们。

谢谢。

【问题讨论】:

    标签: javascript node.js express server


    【解决方案1】:

    如果您使用 express cli 生成器 (https://expressjs.com/en/starter/generator.html) 生成项目,您将在那里看到默认情况下 express 如何将 api 逻辑与 app.js(= 您的 server.js 文件)分开。

    您必须在 app.js 中声明控制器的特定逻辑存储在哪里

    var users = require('./routes/users');
    

    然后该控制器应该使用哪个路由。

    app.use('/users', users);
    

    然后你可以在那里创建一个名为 users.js 的文件并将你的逻辑放在那里 (users.js)

    var express = require('express');
    var router = express.Router();
    
    /* this is the route "/users/" as "/users" is defined in app.js to use that controller and / is defined here */
    router.get('/', function(req, res, next) {
      res.send('respond with a resource');
    });
    
    module.exports = router;
    

    接下来,如果您想将您的数据库内容存储在一个额外的文件中,您可以创建一个模型文件夹来声明您的架构(如果您使用 mongoose):

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var schema = new Schema({
        firstName: {type: String, required: true},
        lastName: {type: String, required: true},
        email: {type: String, required: true, unique: true},
    });
    
    module.exports = mongoose.model('User', schema);
    

    然后您可以将其导入到您的用户路由文件中

    var User = require('../models/user');
    

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 2019-03-04
      • 1970-01-01
      相关资源
      最近更新 更多