如何使用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();