目前我有以下设置
models/sourceModel.js
var mongoose = require('mongoose');
const Schema = mongoose.Schema;
const sourceModel = new Schema({
title: { type: String },
// and lots more
})
module.exports = {
Books: mongoose.model('Books', sourceModel),
Videos: mongoose.model('Videos', sourceModel)
}
然后两条完全相同的不同路线
./routes/booksRoutes.js
var {Books} = require("../models/sourceModel");
const Router = express.Router();
Router
.get("/", (req, res) => {
Books.find({}, ...);
})
//more complex routes
./routes/videosRoutes.js
var {Videos} = require("../models/sourceModel");
const Router = express.Router();
Router
.get("/", (req, res) => {
Videos.find({}, ...);
})
//more complex routes
./routes/index.js
API.use("/videos", require("./videosRoutes"));
API.use("/books", require("./booksRoutes"));
正如我试图展示的,唯一改变的是这个
Books: mongoose.model('Books', sourceModel),
Videos: mongoose.model('Videos', sourceModel)
我想删除/videosRoutes.js
,将/booksRoutes.js
重命名为/Routes.js
,并以某种方式在./routes/index.js
中提供相同的路由、相同的模式,但不同的型号和路由名称。
您可以像以下这样动态访问模型:
Router
.get("/", (req, res) => {
mongoose.model(`${req.path}`).find({}, ...);
})
注意:不要忘记将此路径大写以匹配型号名称并正确导入