我正在构建一个快速的 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 从上到下读取中间件。如果 lrange
从 db
中提取您需要的数据,您可以将数据保存到全局 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解决您的问题。