javascript - 如何在 EJS 文件中使用 MySQL 进行查询

标签 javascript sql node.js

我正在尝试在 View (.ejs 文件)中运行查询。但是,由于 .ejs 文件中未定义关键字 require,因此我需要从主文件 server.js 中导出它。

我的 server.js 文件的完整代码如下,这是我需要帮助的特定代码段。

app.engine('html', require('ejs').renderFile);

exports.profile = 函数(req, res) {

res.render('profile', { mysql: mysql }); }

我需要能够在我的 profile.ejs 文件中使用 mysql.createConnection。

任何帮助都会很棒。

// server.js

// set up ======================================================================
// get all the tools we need
var express  = require('express');
var app      = express();
var port     = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash    = require('connect-flash');

var morgan       = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
var session      = require('express-session');

var configDB = require('./config/database.js');
var Connection = require('tedious').Connection;
var config = {
userName: 'DESKTOP-S6CM9A9\\Yash',
password: '',
server: 'DESKTOP-S6CM9A9\\SQLEXPRESS',
};
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;

  var mysql = require('mysql');
  var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "yashm"
  });

 con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql="Select * from test.productlist";
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log(result);
});
});

app.engine('html', require('ejs').renderFile);


exports.profile = function(req, res) {
    res.render('profile', { mysql: mysql });
}



//--------------------------------------------------------------------------------




// configuration ===============================================================
mongoose.connect(configDB.url); // connect to our database

require('./config/passport')(passport); // pass passport for configuration

// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser()); // get information from html forms

app.set('view engine', 'ejs'); // set up ejs for templating

// required for passport
app.use(session({ secret: 'test run' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session

// routes ======================================================================
require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport

// launch ======================================================================
app.listen(port);
console.log('The magic happens on port ' + port);

最佳答案

就像评论中已经说过的那样,您必须在 server.js 中执行查询逻辑,然后将数据传递到您的 View (或者甚至可能对其进行预处理!)

exports.profile = function(req, res) {
    con.query('SELECT 1', function (error, results, fields) {
      if (error) throw error;
      // connected!
      res.render('profile', { data: results });
    });
}

在你的 ejs 中,你可以循环数据,并以 data[i]['f​​ieldname'] 的形式访问字段

<ul>
<% for(var i=0; i<data.length; i++) {%>
   <li><%= data[i]['id'] %></li>
<% } %>
</ul>

关于javascript - 如何在 EJS 文件中使用 MySQL 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44302350/

相关文章:

javascript - 在脚本rails haml文件中嵌入ruby,如何?

java - persistence.xml 中的数据库模式名称

mysql/nodejs 错误

javascript - jQuery DataTable 行详细信息给出 "data is undefined"

javascript递归计数器

javascript - 生成的 SVG 图像不显示

MySQL用于统计用户有多少个前10名的分数

c# - 不支持 Linq-to-EF DateTime.ToLocalTime

node.js - 连接 robomongo 与 modulus mongodb 服务器

javascript - 使用 node.js 从 json 数据中过滤值