CNode

数据查询是放在router中吗

问答
IIEfucker发布于10 年前最后回复10 年前6 回复4307 浏览0 收藏

看的几个例子,写法都比较简单: 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)

I
IEfucker#1·10 年前

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

I
IEfucker#2·10 年前
引用 DevinXian题主搞java的吧

@DevinXian 不是啊

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

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

S
sanrudongfeng#4·10 年前

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

I
IEfucker#5·10 年前
引用 sanrudongfeng浏览器 web服务层 service层 dao层,理论上讲你那个方法应该放在service层里面去,为web层提供数据,web层返回渲染结果或者处理结果

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

D
DevinXian#6·10 年前

题主搞java的吧

参与回复
登录后即可参与回复。登录