我正在构建一个快速的Express JS应用程序。我已从其他应用程序向Redis发送数据。 我做了一个LPUSH。我能够做到这一点:
client.lrange('stash', 0, 10, function(err, reply) {
console.log(reply);
});
我的目标是,而不是做一个console.log(“...”),我想把它发送到我的index.html。 关于如何做到这一点的任何想法?
编辑:这是我的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)')
});
答案 0 :(得分:2)
根据我的理解,您可以使用ejs
将数据直接插入到您的html中。问题当然是我不知道client.lrange
是如何工作的,但我知道express从上到下读中间件。如果lrange
从db
中提取您需要的数据,您可以将数据保存到全局var data
并调用要更新的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});
});
<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来解决您的问题。