我正在构建一个快速的 Express JS 应用程序。我已经从另一个应用程序向 Redis 发送数据。 我做了一个 LPUSH。我能够做到这一点:

client.lrange('stash', 0, 10, function(err, reply) { 
    console.log(reply); 
}); 

我的目标是,而不是执行 console.log("..."),我想将它发送到我的 index.html 中的 a。 关于如何执行此操作的任何想法?

编辑:这是我的 app.js 文件:

var express = require('express'); 
var redis = require('redis'); 
var app = express(); 
 
app.use(express.static('public')); //used to get image 
app.engine('html', require('ejs').renderFile); //ejs, not handlebars 
 
function index(req,res, next) { 
    testController.index(req, res, next);    
} 
 
app.get('/', function(req, res){ 
    res.render('index.html'); 
}); 
 
app.get('*', function(req, res){ 
    res.render('404.html'); 
}); 
 
//redis stuff 
var client = redis.createClient(); 
 
client.on('connect', function() { 
    console.log('connected'); 
}); 
 
client.lrange('stash', 0, 10, function(err, reply) { 
    console.log(reply); //instead of this, let's place that into a div 
}); 
//end redis 
 
app.listen(3000, function(){ 
    console.log('My example app is now running! (3000)') 
}); 

请您参考如下方法:

根据我的理解,您可以使用 ejs 将数据直接插入到您的 html 中。问题当然是我不知道 client.lrange 是如何工作的,但我知道 express 从上到下读取中间件。如果 lrangedb 中提取您需要的数据,您可以将数据保存到全局 var data 并调用您要更新的 html;用 ejs 渲染它。

为数据创建一个占位符

var data; 

从服务器拉取数据并全局保存

client.lrange('stash', 0, 10, function(err, reply) { 
  data = reply; 
}); 

使用ejs标签渲染带有ejs的html页面

app.get('/', function(req, res) { 
    res.render('index.html', {reddisData: data}); 
}); 

将其插入您的 html

<a> 
   <%= reddisData %> 
</a> 

一起

var express = require('express'); 
var path = require('path'); 
 
app = express() 
app.engine('html', require('ejs').renderFile); 
 
app.set('html', 'ejs'); 
 
var data; 
 
client.lrange('stash', 0, 10, function(err, reply) { 
  data = reply; 
}); 
 
app.get('/', function(req, res) { 
  res.render('index.html', {reddisData: data}); 
}); 

希望这对您有所帮助,如果它对您不起作用,那么想法才是最重要的。考虑使用 ejs解决您的问题。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!