重定向到数据库表值

时间:2016-10-14 23:43:40

标签: javascript node.js database postgresql

我正在编写一个URL缩短程序,但遇到了一些问题。

因此,当用户发送请求时,请说 http://localhost:3000/1 ,我希望它重定向到存储在 original_url 列下的网址,该网址包含我的数据库中的ID为1

这是我为实现这个目的所写的功能:

Oct 18 19:45:17 578908315d82 systemd[1]: Starting LSB: Jenkins Continuous Integration Server...
Oct 18 19:45:17 578908315d82 jenkins[95]: /etc/rc.d/init.d/jenkins: line 51: /etc/init.d/functions: No such file or directory
Oct 18 19:45:17 578908315d82 systemd[1]: jenkins.service: control process exited, code=exited status=1
Oct 18 19:45:17 578908315d82 systemd[1]: Failed to start LSB: Jenkins Continuous Integration Server.
Oct 18 19:45:17 578908315d82 systemd[1]: Unit jenkins.service entered failed state.
Oct 18 19:45:17 578908315d82 systemd[1]: jenkins.service failed.

问题是,在我匹配正确的ID之后,我不知道如何将用户重定向到我的列 original_url 中存储的网址,其中包含要重定向的网址。< / p>

如何检索与输入的ID对应的 original_url 的值?

Here is my full code

1 个答案:

答案 0 :(得分:0)

假设您正在使用npm(npm i --save pg)中的node-postgres包, 查询结果可以作为result.rows获得。如果你找到一行,result.rows [0] .original_url可能会有你的重定向。此外,pg包使用公共节点回调模式。

client.query('SELECT * FROM items WHERE id = $1', [req.params.id], function (err, result) {
    if (err) throw err;

    console.log(result.rows[0]); // outputs: { original_url: 'http://mysite.dev' };
}

如果您使用的是restify服务器,则必须在旁边传递重定向。 Express不要求。

例如与restify:

app.get('/:id', function (req, res, next) {
  res.redirect(url, next);
}

如果重定向网址不包含协议(即http),则重定向将相对于当前网址路径。