我喜欢在可能的情况下拆分我的代码 - 并且在路由中使用SQL会让我感到畏缩。
节点JS对我来说是新手,我现在正在学习它,但我遇到了以下问题(页面只是挂起而且没有提供任何服务)。
以我目前的知识水平对我有意义 - 但我想有更好的方法可以做到这一点。
感谢您抽出宝贵时间阅读本文,非常感谢您的帮助。
路线
var express = require('express');
var router = express.Router();
var db = require('../lib/db.js');
var model = require('../models/contacts.js');
/* GET contacts. */
router.get('/', function(req, res) {
// Get data from model - RETURN THE ROWSET HERE
model.get_names(db, function(rowset) {
res.render('contacts', {
title: 'Contacts | Rhubarb',
nav_active: "contacts",
}, function(err, output) {
res.status(200).send(rowset);
}); // res.render
}); // model.get_names
}); // router
module.exports = router;
模型
module.exports.get_names = function(db) {
var sql = " SELECT attr_name " +
" , attr_value " +
" FROM contacts a " +
" , contact_attributes b " +
" WHERE a.contact_id = b.contact_id " +
" AND (attr_name = 'forename' OR attr_name = 'surname')";
db.all(sql, function(err, rowset) {
if (err) throw err;
return rowset;
}); // db.all
} // get_names
答案 0 :(得分:0)
通过向函数添加实际回调来对其进行排序... 叹息 ...
module.exports.get_names = function(db, callback) {
var sql = " SELECT attr_name " +
" , attr_value " +
" FROM contacts a " +
" , contact_attributes b " +
" WHERE a.contact_id = b.contact_id " +
" AND (attr_name = 'forename' OR attr_name = 'surname')";
return db.all(sql, function(err, rowset) {
if (err) throw err;
return callback(rowset);
});
}