【发布时间】:2021-01-29 05:38:45
【问题描述】:
我正在使用 firebase Functions 来显示 NodeJS + Express 并将请求与 API-Rest 分开我将几个函数分开如下:
const auth = require('./functions/auth');
const user = require('./functions/user');
const msgtypes = require('./functions/msgtypes');
const msg = require('./functions/msg');
const comment = require('./functions/comment');
//const test = require('./functions/test');
exports.auth = auth.app
exports.user = user.app
exports.msg = msg.app
exports.msgtypes = msgtypes.app
exports.comment = comment.app
每个函数都是这样的: (用户功能) const app = require('./app');
app.get('/me', general.logUrl, ctrl.me)
app.put('/images', general.logUrl,general.isLoged, upload.any() , ctrl.removeImage)
app.post('/images', general.logUrl,general.isLoged, upload.any() , ctrl.uploadImage)
app.get('/images', general.logUrl,general.isLoged, ctrl.getImages)
//app.get('/', ctrl.get)
app.get('/notifs', general.logUrl, ctrl.getMyNotifs)
app.post('/', general.logUrl,general.isAdmin, ctrl.createUser)
app.post('/profile',general.logUrl, ctrl.publicProfile)
app.post('/contact',general.logUrl, ctrl.contactUser)
app.get('/:id', general.logUrl,general.isAdmin, ctrl.getData)
app.post('/status/:id', general.logUrl,general.isAdmin, ctrl.status)
app.put('/', general.logUrl,general.isLoged, ctrl.update)
app.post('/edit', general.logUrl,general.isLoged, ctrl.update)
app.post('/change/:id', general.logUrl,general.isLoged, ctrl.change)
app.post('/changePass', general.logUrl, general.isLoged, ctrl.changeUserPass)
app.delete('/:id', general.logUrl, general.isAdmin, ctrl.remove)
exports.app = functions.region(process.env.REGION).https.onRequest(app)
(味精功能)
const app = require('./app');
app.post('/search_by' , general.logUrl, ctrl.searchWithParams )
app.post('/search' , general.logUrl, ctrl.search )
app.get('/my' , general.logUrl, general.isLoged, ctrl.getMy )
//app.get('/' general.logUrl,, general.isAdmin, ctrl.get )
app.post('/create' , general.logUrl, general.isLoged, ctrl.createNew )
app.put('/' , general.logUrl, general.isLoged, ctrl.update )
app.post('/edit' , general.logUrl, general.isLoged, ctrl.update )
app.delete('/:id' , general.logUrl, general.isLoged, ctrl.remove )
app.get('/comment/:id', general.logUrl, general.isLoged, ctrl.getComments )
app.delete('/images' , general.logUrl, general.isLoged, ctrl.removeImage )
app.post('/images' , general.logUrl, general.isLoged, upload.any() , ctrl.uploadImage )
app.get('/images' , general.logUrl, general.isLoged, ctrl.getImages )
app.get('/images/:id' , general.logUrl, general.isLoged, ctrl.getImages )
app.get('/:id' , general.logUrl, ctrl.getData )
app.post('/:id' , general.logUrl, general.isLoged, ctrl.comment )
//app.use('/comment', require('./comment.route') )
exports.app = functions.region(process.env.REGION).https.onRequest(app)
问题是,当我在 /tas/images 上发帖时,我正在回答我为 /user/me 提供的功能。
第一个是 POST,第二个是 GET,我不明白发生了什么。如果有人可以给我建议或指导,我会举例说明我是如何组织的。
【问题讨论】:
-
那么,您收到的结果好像是在使用另一个函数?你尝试
POST到/ tas / images,结果是GET的user / me?您是否尝试过仅使用此功能部署所需的最低限度? -
我试着把每个功能一点一点上去;并且似乎当它匹配时,控制器的方法以相同的方式被调用。或者与另一个函数重合的方法不知道要回答哪个函数。我开始认为这是创建 Express 应用程序时的错误,该应用程序在不同功能之间共享创建的对象。将此代码作为节点项目而不是函数启动不会出现此问题。
标签: firebase google-cloud-functions