这是快递路线的错误用法吗?

时间:2016-11-21 05:55:55

标签: node.js express

免责声明:快递/节点的新功能,在照片托管/图库应用程序上进行练习。

我的理解是路由器用作从服务器到客户端/数据库的端点。

在这种情况下,我有一个名为 storeImages 的功能,它将图像位置存储到数据库,但是从Node js app中调用,而直接从客户端请求调用。

我应该将 storeImages 作为辅助功能移动到路由器文件夹之外吗?

我有点困惑,因为即使没有直接从客户端发布/获取请求调用,我觉得images.js路由本质上与Image.js模型绑定...和数据库操作不应该存在于它之外。以这种方式思考我错了吗?

如果实际上最好将它保存在路由器文件夹中,那么将所述功能与路由器一起导出的正确方法是什么?下面的当前方法不起作用,我也尝试过:

module.exports = {router:router,  storeImages:storeImages, }

但这也不起作用。

var express = require('express');
var router = express.Router();
var Image = require('../models/image');

router.get('/getImageLocations', function(req,res){
    //Do Stuff
});


exports.storeImages = function(memoryId, location, comment){
    var newImage = new Image({
        ...
    });
    Image.storeImageURL(newImage, function(err, user){
        ...
    })
};

module.exports = router;

1 个答案:

答案 0 :(得分:2)

路由器是处理http请求的函数。现在,关于需要进入路由器文件的内容并没有什么硬性规定,但是根据我在代码中的理解,storeImages是一个接受来自params的函数并且商店会持久存储到数据库中。以下是一些拇指规则:

  • 如果函数绑定到路由,即仅在调用一个特定路由时使用它,则将其保留在该路由器中是有意义的
  • 如果该函数在多个路由中使用,则应将其存储为路径文件
  • 之外的共享实用程序功能
  • 如果是模型相关功能,您可以将其存储在模型文件中,具体取决于您处理模型图层的方式