如何使用Nodejsredirect到另一个页面,如谷歌?
我正在尝试获取一个将被存储在短variables中的数字。 然后,我在数据库中查找与该数字相匹配的特定shortUrl。 如果我find它,我希望响应是完整的url,我们假设www.google.com。
所以当用户input时,例如:localhost:8888/3451会redirect到www.google.com.br
app.get('/:short', function(req, res){ var short = req.params.short; shortUrl.find({shortUrl: short}).then(function(result){ var urlSearch = result[0]["url"]; //www.google.com res.redirect(urlSearch) //DOESNT WORK }); });
我怎样才能做到这一点?
试试这个code.This作品像魅力!!!!!! Firsrt创build一个models
文件夹,并将其放置在shortUrl.js
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Url = new Schema({ shortUrl: { type : Number }, url: { type : String } }); module.exports = mongoose.model('url', Url);
接下来创build一个routes
文件夹,把这个文件放在它的urls.js
var express = require('express'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var shortUrl = require('../models/shortUrl'); var app = express(); var url = express.Router(); url.use(bodyParser.json()); url.route('/:short') .get( function(req, res){ var short = req.params.short; shortUrl.find({shortUrl: short}).then(function(result){ var urlSearch = result[0]["url"]; res.redirect('https://'+urlSearch) //DOESNT WORK }); }); url.route('/num') .post(function(req,res){ shortUrl.create(req.body,function(err,url){ if (err) return console.log(error); return res.send(url); }); }) app.use('/url',url); module.exports = url;
接下来创build一个configuration文件,以便你可以连接config.js
module.exports = { 'secretKey': '12345-67890-09876-54321', 'mongoUrl' : 'mongodb://localhost:27017/redirect' }
现在创build一个类似express.js
的服务器文件
var express = require('express'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var config = require('./config'); var mongoose = require('mongoose'); mongoose.Promise = require('bluebird'); mongoose.connect(config.mongoUrl); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function () { console.log("Connected correctly to server"); }); var app = express(); var url = require('./routes/url'); var shortUrl = require('./models/shortUrl'); app.use('/url',url); app.listen(3000,function(){ console.log("Server listening on port 3000"); });
输出 :作为
node express.js
运行代码
每当你想使用http://localhost:3000/url/num
并以json格式给出详细信息。每当你想得到ie,redirect到任何页面使用http://localhost:3000/url/:shrot
。在这里:只要简短的一个参数就可以传递一个数字。希望这对你有帮助。
试试这个解决scheme
res.writeHead(301, {Location: 'http://whateverhostthiswillbe.com'} ); res.end();