我通过Express网络服务器从Node.JS提供静态网页:
app.use('/', express.static('public'));
整合某些动态内容的最简约方法是什么,例如从数据库检索到这样一个页面的项目列表?
我看到有可能在实际动态创建的服务器上“伪造”.js文件,然后加载到位于服务器上index.html
文件夹内的public
中:
app.get('/myScript.js', (req, res) => {
data = getDataFromDatabase();
res.send('var data1 = ' + data[0] + '; var data2 = ' + data[1]);
});
这看起来非常hacky,我想知道最好的简约方法是什么。
答案 0 :(得分:0)
您还可以从get路由中的回调中返回响应。我做这样的事情:
端点:
router.get('/people', (req, res) => {
People.list((error, response) => {
if (error) return res.end();
return res.send(response);
});
});
型号:
module.exports = {
connect: (callback) => {
r.connect({
host: config.db.host,
port: config.db.port,
db: config.db.name
})
.then((connection) => {
return callback(null, connection);
})
.error((err) => {
return callback(err);
});
},
list: function (callback) {
this.connect((err, connection) => {
if (err) return callback(err);
r.db(config.db.name).table(config.db.tables.people)
.run(connection)
.then((cursor) => {
return cursor.toArray();
})
.then((users) => {
return callback(null, users);
})
.error((err) => {
return callback(err);
});
});
},
...
然后我将响应对象打印到我的屏幕上。模型代码是rethinkdb代码,但您可以将其替换为您正在使用的任何代码。对不起,如果这不是你想要的。祝你的构建好运=)