数据查询是放在router中吗
发布于 7 年前 作者 IEfucker 3611 次浏览 来自 问答

看的几个例子,写法都比较简单: var router = require(‘koa-router’)(); var Ninja = require("…/models/ninja") var apiNinjas = require("./api/ninjas")

router.get(’/’, async function(ctx, next) { const ninjas = await Ninja.find() ctx.state = { title: ‘Naruto’, ninjas: ninjas }; await ctx.render(‘ninjas’,{})
}) module.exports = router;

这个查询比较简单只是model.find(),如果查询逻辑复杂一点,这块的代码能抽离出来在不同的地方调用吗,比如我想写成api,可以通过http直接访问接口,也可以后台require这个服务,然后在后端把数据和模板render。这个怎么做,代码放在mvc那一层?

6 回复

还是说这种逻辑代码不需要单独拿出来,如果是api和后台render页面的两种方式,写两遍?大家实践中是怎么做的

浏览器-web服务层-service层-dao层,理论上讲你那个方法应该放在service层里面去,为web层提供数据,web层返回渲染结果或者处理结果

@sanrudongfeng 哦感谢,开始看别人博客到了Dao层,没理解清楚,再请教下,后来我想再写个controller层,相当于router和controller层分开,这样做可取吗

题主搞java的吧

@IEfucker 虽然逻辑简单的时候你放在router里面看起来没事,但这真的不是一个好习惯啊,放在serive里面。nodejs里面的router就相当于controller了,分发请求,controller以前的那些相当于java的拦截器过滤器之类,在router里面调用service里提供的方法,service里面调用dao

回到顶部