node.js - 在node expressjs中按照MVC的思想,数据库mongoose处理增删修改,应该放在哪里?
巴扎黑
巴扎黑 2017-04-17 13:41:50
[Node.js讨论组]

小白一个,对后端不是很了解,请问在node expressjs中按照MVC的思想,数据库mongoose处理增删修改,应该放在哪里?单独放一个文件夹models里面吗?还是放routes文件夹下?路由器中间件相当于控制器C对吧?。。
在此谢谢了!

巴扎黑
巴扎黑

全部回复(2)
大家讲道理

你的增删查改是怎么发起的?往往也是响应用户的一个路由操作吧?小项目可以直接写在路由的处理函数里。比如:

router.get('/item/:id', function(res, req, next) {
    db.collection('items').findOne({'_id': new ObjectID(req.params.id)}, function(err, item) {
        /*根据返回的item渲染view*/
    });
})

当然这样写稍微有点寒碜,像楼上所说,也可以专门建一个model 文件夹,专门封装对数据的增删查改操作:

/* ./model/Item.js*/
Item.getById = function(id, callback) {
    db.collection('items').findOne({'_id': new ObjectID(id)}, function(err, item) {
        if (err) {
            callback(err);
        }
        callback(null, item)
        
    })
}

把Item.getById 函数导出,就可以直接用了:

router.get('/item/:id', function(res, req, next) {
    Item.getById(req.params.id, function(err, item) {
        /*根据返回的item渲染view*/
    })
})

这样写的好处是把对数据的增删查改解耦出来;如果有其他路由需要根据id获取数据,也是直接用Item.getById 就可以了。

高洛峰

放文件夹models下

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号