我正在编写一个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 的值?
答案 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),则重定向将相对于当前网址路径。