javascript - 在 Node Express 应用程序的模块中使用变量

标签 javascript node.js express module

express 生成器创建一个如下所示的应用程序: 在主 app.js 中:

var app = express();
//...
var routes = require('./routes/index');
app.use('/', routes);
//...

在routes/index.js

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

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

在 index.js 中使用我在 app.js 中定义的变量的最佳方式是什么? 例如,在定义路由之前,我设置了 mongoose 模型:

var myModel;

mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;

db.once('open', function (callback) {
    //load schemas
    var dbSchema = require('./schema');
    myModel = mongoose.model('mymodel', dbSchema.myModel);
});

如何在路由模块中使用“myModel”?

最佳答案

您应该在 app.js 之外定义您的模型,在每个单独模型的单独文件中,然后导出该模型,然后您就可以require在您需要它的各个地方。您的模型定义实际上不需要位于 db.once('open'

例如:如果您有一个模型User,您应该在自己的文件中定义它,如下所示:

db/user.js

var mongoose = require('mongoose');
var schema = mongoose.Schema({
    …
});
var model = mongoose.model('user', schema);
module.exports = model;

如果您想在 routes/index.js 中使用 User 模型,可以这样:

…
var User = require('../db/user');
router.get('/user/:id', function(req, res, next) {
    User.findById(req.params.id, function(err, user){
        res.render('user', { title: 'Express', user: user});    
    });
});

关于javascript - 在 Node Express 应用程序的模块中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098604/

相关文章:

javascript - if 语句的最短 Javascript 速记

node.js - Sequelize 关联生成不存在的字段

javascript - 如何将 Jade 变量分配给 Angular 绑定(bind)

javascript - 如何在客户端实现 JSON Web token - Node.js

node.js - 502 : Proxy Error from Express app on Ubuntu 18. 04 & Apache2

javascript - 使用 jQuery 的目标伪类

javascript - Mongoose 方法返回未定义

javascript - 二维数组的位置排序

javascript - 将 chrome devtools 与 browsersync & --inspect 一起使用

ios - Azure 表插入中传入值的递增值