栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Express中的多个SELECT查询后的渲染视图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Express中的多个SELECT查询后的渲染视图

在您的情况下,我会将数据库调用分成多个单独的调用,并利用

next
中间件功能。

它看起来像:

function findStudent(req, res, next) {    var dbRequest = 'SELECt * FROM Students WHERe IDCard = '' + req.query['id'] + ''';    db.all(dbRequest, function(error, rows) {        if(rows.length !== 0) { req.students = rows; return next();        }        res.render('incorrect_student');      });}function findGroups(req, res, next) {    dbRequest = 'SELECt * FROM Groups WHERe Name = '' + req.query['group'] + ''';        db.all(dbRequest, function(error, rows) {  req.groups = rows; next();        }    });}function renderStudentsPage(req, res) {    res.render('student', {        students: req.students,        groups: req.groups    });}app.get('/student', findStudent, findGroups,  renderStudentsPage);

当您获得GET时

/student
,您首先要打电话
findStudent
。一旦数据库调用完成,它将呈现错误页面,或调用next()。调用next转到下一个函数,
findGroups
然后调用
renderStudentsPage
。您可以在向下移动功能行时将数据存储在req对象上。

希望这会有所帮助,这里是更多信息:http :
//expressjs.com/guide/using-
middleware.html


编辑/注释:

我之前没有提到它,但是如果在调用时传递参数

next()
,则会触发错误处理状态。约定表明
next()
没有参数,除非遇到错误实例。

您希望将UI呈现方面与数据库调用分开,因此,进一步讲,您的代码可能类似于:

function findStudent(req, res, next) {    var dbRequest = 'SELECt * FROM Students WHERe IDCard = '' + req.query['id'] + ''';    db.all(dbRequest, function(error, rows) {        if (error || !rows.length) { return next(error);        }        req.students = rows;        return next();    });}

然后在代码的其他地方,您可以处理呈现错误页面。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号