对 Express 中的所有模型使用相同的路由器模式

Use same router schema for all models in Express

假设我有 Node.JS 应用程序由 3 个模型组成:projecttask, 用户.
我想为这些模型创建路由,但具有相同的路由器模式:

'use strict';

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

module.exports = function (entity) {
    router.route('/:entity_id')
    .get(get_entity);

    var get_entity = function (req, res) {
        res.send(entity + req.params.entity_id);
    };

    router.get('/', function (req, res) {
        res.send(entity);
    });

    return router;
};

我的解决方案是将文件读入 /models 目录,并为找到的文件创建路由器实例:

var path= require('path');
var fs= require('fs');
var modelsDir= fs.readdirSync(path.join(__dirname, '../models'));
modelsDir.forEach(function (model) {
    if (model.indexOf('.js') > -1) {
        var modelName = model.substr(0, model.length-3);
        app.use('/'+modelName, require('./api/global')(modelName));
    }
});

当我启动应用程序时,有些奇怪;这是我在浏览器中的输出:

我猜路由器是在第一次调用 app.use() 时创建的(对于 project),然后 express 应用程序将此路由器用于给定的新路径(任务,用户)。但是我如何以编程方式为每个模型定义一个路由器? (我有五十个不同的模型...)

只需将 var router = express.Router(); 放入 module.exports 函数中

router是同一个对象,第二次调用的时候会覆盖之前的实现,当你把声明放在里面的时候,每次调用这个函数,都会创建一个新的实例,不会覆盖上一个