以下node.js模块在初始化期间两次ModelA
和ModelB
两次,如预期的那样。然后模型参数以某种方式被覆盖,当我尝试使用路由时,它总是记录ModelA
。
module.exports = (model) => {
console.log(model.modelName);
return (db) => {
console.log(model.modelName);
router.post('/', (req, res, next) => {
console.log(model.modelName);
model.insertMany(req.body, (err, docs) => {
if(err) return next(err);
res.json(docs);
});
});
return router;
};
};
模块的使用方式如下:
const express = require('express');
const router = express.Router();
const plural = require('./plural.js');
module.exports = (db) => {
router.use('/a', plural(db.ModelA)(db));
router.use('/b', plural(db.ModelB)(db));
return router;
};
答案 0 :(得分:1)
假设您只是在plural.js的顶部创建一个新的Router
实例,那么您需要在添加路由处理程序的函数内创建Router
实例({{1} }),否则您将同时返回相同的router.post(...)
实例,而对Router
的第二次调用只会附加到同一plural()
。因此,基于Router
的路由处理程序将始终首先执行并响应请求(除非它调用ModelA
)。例如:
next()