通过Express将动态内容集成到Node.JS上的静态服务页面的最简单方法

时间:2016-10-11 19:42:55

标签: javascript node.js express dynamic-content

我通过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]);
});

这看起来非常h​​acky,我想知道最好的简约方法是什么。

1 个答案:

答案 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代码,但您可以将其替换为您正在使用的任何代码。对不起,如果这不是你想要的。祝你的构建好运=)