gpt4 book ai didi

node.js - 数据库更新后nodejs自动刷新 View

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:08 24 4
gpt4 key购买 nike

每次函数对数据库进行更改时,我都想使用 nodeJS 来刷新我的 View 。如果我们以 MEAN-stack 为例,我不想每 x 秒发送一个 $http-request 来检查是否对数据库进行了更改。我希望前端能够自动收到通知,然后更新 View 。

这方面的最佳做法是什么?我会在服务器端使用某种 Oberserver 模式,但不知道如何通知前端。

最佳答案

要让前端自动收到通知然后更新 View ,您可以使用 Socket.io 框架。您可以在他们的网站上找到所有文档:http://socket.io/这是一个基本示例:

app.js(设置服务器)

var http = require('http');
var express = require('express');
var port = normalizePort(process.env.PORT || '1000');
var app = express();
var server = http.createServer(app);
server.listen(port);

io = require('socket.io')(server);

///ROUTES
var routes = require('./routes/index')(io);
var users = require('./routes/users');
///////

我将 io 对象传递给路由索引(当然 app.js 上还有很多东西......这只是一个基本示例......)。

mysql.js(为连接创建一个池)

var mysql = require("mysql");
var pool = mysql.createPool({
host : 'host',
user : 'user',
password : 'pass',
database : 'db_name',
connectionLimit: 1000
});

exports.pool = pool;

索引.js

module.exports = function(io) {
var express = require('express');
var router = express.Router();
var mysql = require('../mysql.js').pool;

io.on('connection', function (socket) {
socket.on('event_name', function (data) {
mysql.getConnection(function(err,connection){
if (err) {
connection.release();
return;
}
connection.query("SQL STUFF",function(err,rows){
if(rows.length>0){//checks if there are more than 0 rows returned.....
socket.emit('do_something',data_you_want_to_pass);
}
else{
socket.emit('do_something_else',data_you_want_to_pass);
}
connection.release();
});

connection.on('error', function(err) {
return;
});
});
});

});

router.get('/', function(req, res) {
res.render("index");
});

return router;
}

然后在 html 页面上,您再次拥有 socket.emit 和 socket.on.....

我建议您查看文档和其他一些示例...

希望对你有所帮助。

关于node.js - 数据库更新后nodejs自动刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35024814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com