【发布时间】:2017-04-11 09:02:56
【问题描述】:
我有三个文件server.js, views.js 和access.js
在server.js我已经把所有dependencies和一些routes之类的都放了
app.post('/services/getallversions', (req, res) => {
...
// code to handle the req and send response
})
在views.js 我有如下代码,
module.exports = function(app, db, bodyParser, rules, constants, query) {
app.post('/services/user/:user/:type', (req, res) => {
// user can be 'abcd'
// type can be addview, deleteview etc.
...
// do processing for the req and send res
})
}
在access.js 我有类似的代码,
module.exports = function(app, db, bodyParser, rules, constants, query) {
app.post('/services/user/:user/:type', (req, res) => {
// user can be 'abcd'
// type can be addaccess, removeaccess etc.
...
// do processing for the req and send res
})
}
在server.js 文件中,我需要access.js and views.js 以下方式,
var access = require('./access')(app, db, bodyParser, rules, constants, query)
var views = require('./views')(app, db, bodyParser, rules, constants, query)
当我尝试使用/services/user/abcd/addaccess POST 时,我的views.js 文件代码被执行。 constants, query, rules 是其他 .js 文件,已在 server.js 中使用 require('./filename')。
我了解此歧义是由于相同的 URL 结构造成的。我正在使用 Express 4 和 Node JS 6。我想将 access.js 和 views.js 的代码与 server.js 分开,并将它们放在单独的文件中,并以上述方式要求它们。 views.js 和 access.js 是我创建的。它们不是任何 Javascript 框架或类似的东西。
在view.js我也试过下面的代码
var router = require('express').Router()
router.post('/services/user/:user/:type', (req,res)=>{})
但同样的问题也存在。有什么方法可以实现吗?
【问题讨论】:
-
我很难理解你到底在问什么。服务器究竟应该如何知道是运行
views.js还是access.js代码?网址完全相同相同。你知道这个问题,但如果不使用不同的 URL,就不可能解决,简单明了。当您包含views.js在 另一个文件之后,app.post()调用简单地覆盖access.js中的那个。
标签: javascript node.js express