MySql 插入nodejs后更新
MySql update after inserting nodejs
我用 express 框架和 ejs 模板在 nodejs 中制作了一个简单的应用程序,我可以在其中插入 mysql 数据库并查看结果,但是由于某些原因,当我插入和刷新页面时,新日期是不显示,即使它放在 database.I 需要关闭服务器才能看到新数据。
我的 index.js 路由文件如下所示:
var express = require('express');
var mysql = require('mysql');
var router = express.Router();
var users = [];
var age = [];
var connection = mysql.createConnection( {
host: 'localhost',
user: 'admin',
password: 'pass',
database: 'users'
});
console.log('\nconnecting to database');
connection.connect();
var query = connection.query('select * from users', function(err, result) {
if(err) {
console.error(err);
return;
} else {
for(var i = 0; i<result.length; i++)
{
users.push(result[i]['user']);
age.push(result[i]['age']);
}
}
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Index page',
users: users,
age: age
});
});
/* GET insert page. */
router.post('/insert', function(req, res, next) {
var user = req.body.user;
var age = req.body.age;
var user_p = {
user: user,
age: age
};
console.log("post received: %s %s", user, age);
var query = connection.query('insert into users set ?', user_p, function(err, result) {
if(err) {
console.error(err);
return;
} else {
console.log(result);
}
});
res.render('insert', {
title: 'Insert page',
user: user_p
});
});
// I've removed this connection.end() after I saw the error. But still not getting the new data out of the database when I go back to the index file
connection.end();
module.exports = router;
index.ejs:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head><% include partials/template/head.ejs %></head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<ul>
<% for(var i=0; i<users.length; i++) {%>
<li>User: <%= users[i] %>, Age: <%= age[i] %></li>
<% } %>
</ul>
<form action="/insert" method="post">
<input type="text" name="user" placeholder="User"/>
<input type="text" name="age" placeholder="Age"/>
<input type="submit" value="send"/>
</form>
<% include partials/template/footer.ejs %>
<% console.log('included footer'); %>
</body>
</html>
和insert.ejs:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head><% include partials/template/head.ejs %></head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<p>User: <%= user.user %></p>
<p>Age: <%= user.age %></p>
<% include partials/template/footer.ejs %>
<% console.log('included footer'); %>
</body>
</html>
如何在插入和刷新后查看 "live" 数据库中的更改?
P.S。
我刚刚看到我的控制台出现以下错误:
{ [Error: Cannot enqueue Query after invoking quit.] code: 'PROTOCOL_ENQUEUE_AFTER_QUIT', fatal: false }
P.P.S。
我在看到错误后删除了这个 connection.end() 。但是当我回到索引文件时仍然没有从数据库中取出新数据
您似乎从未更新渲染“/”时使用的数组
var users = [];
var age = [];
使用 'select * from users' 查询填充一次,但之后永远不会更新。
您可以(为了了解发生了什么)添加
console.log(result);
users.push(user_p.user);
在 'insert into users set ?' 请求的 ok 分支中。这将显示新用户。
关于 'age',你不能简单地做同样的事情,因为你有一个 'var age' 局部变量隐藏你的 'var age' 模块范围变量。
我用 express 框架和 ejs 模板在 nodejs 中制作了一个简单的应用程序,我可以在其中插入 mysql 数据库并查看结果,但是由于某些原因,当我插入和刷新页面时,新日期是不显示,即使它放在 database.I 需要关闭服务器才能看到新数据。
我的 index.js 路由文件如下所示:
var express = require('express');
var mysql = require('mysql');
var router = express.Router();
var users = [];
var age = [];
var connection = mysql.createConnection( {
host: 'localhost',
user: 'admin',
password: 'pass',
database: 'users'
});
console.log('\nconnecting to database');
connection.connect();
var query = connection.query('select * from users', function(err, result) {
if(err) {
console.error(err);
return;
} else {
for(var i = 0; i<result.length; i++)
{
users.push(result[i]['user']);
age.push(result[i]['age']);
}
}
});
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Index page',
users: users,
age: age
});
});
/* GET insert page. */
router.post('/insert', function(req, res, next) {
var user = req.body.user;
var age = req.body.age;
var user_p = {
user: user,
age: age
};
console.log("post received: %s %s", user, age);
var query = connection.query('insert into users set ?', user_p, function(err, result) {
if(err) {
console.error(err);
return;
} else {
console.log(result);
}
});
res.render('insert', {
title: 'Insert page',
user: user_p
});
});
// I've removed this connection.end() after I saw the error. But still not getting the new data out of the database when I go back to the index file
connection.end();
module.exports = router;
index.ejs:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head><% include partials/template/head.ejs %></head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<ul>
<% for(var i=0; i<users.length; i++) {%>
<li>User: <%= users[i] %>, Age: <%= age[i] %></li>
<% } %>
</ul>
<form action="/insert" method="post">
<input type="text" name="user" placeholder="User"/>
<input type="text" name="age" placeholder="Age"/>
<input type="submit" value="send"/>
</form>
<% include partials/template/footer.ejs %>
<% console.log('included footer'); %>
</body>
</html>
和insert.ejs:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head><% include partials/template/head.ejs %></head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<p>User: <%= user.user %></p>
<p>Age: <%= user.age %></p>
<% include partials/template/footer.ejs %>
<% console.log('included footer'); %>
</body>
</html>
如何在插入和刷新后查看 "live" 数据库中的更改?
P.S。 我刚刚看到我的控制台出现以下错误:
{ [Error: Cannot enqueue Query after invoking quit.] code: 'PROTOCOL_ENQUEUE_AFTER_QUIT', fatal: false }
P.P.S。 我在看到错误后删除了这个 connection.end() 。但是当我回到索引文件时仍然没有从数据库中取出新数据
您似乎从未更新渲染“/”时使用的数组
var users = [];
var age = [];
使用 'select * from users' 查询填充一次,但之后永远不会更新。
您可以(为了了解发生了什么)添加
console.log(result);
users.push(user_p.user);
在 'insert into users set ?' 请求的 ok 分支中。这将显示新用户。
关于 'age',你不能简单地做同样的事情,因为你有一个 'var age' 局部变量隐藏你的 'var age' 模块范围变量。