Javascript 我如何使用Nodejs重定向到另一个像谷歌这样的页面?

Javascript 我如何使用Nodejs重定向到另一个像谷歌这样的页面?,javascript,node.js,express,Javascript,Node.js,Express,我试图得到一个将存储在短变量中的数字。然后我在数据库中查找与该数字匹配的特定短URL。如果我找到它,我希望响应是完整的url,让我们假设www.google.com 因此,当用户键入,例如:localhost:8888/3451时,将重定向到www.google.com.br app.get('/:short', function(req, res){ var short = req.params.short; shortUrl.find({shortUrl: short}).t

我试图得到一个将存储在短变量中的数字。然后我在数据库中查找与该数字匹配的特定短URL。如果我找到它,我希望响应是完整的url,让我们假设www.google.com

因此,当用户键入,例如:localhost:8888/3451时,将重定向到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

    });
});
我如何才能做到这一点?

试试这个解决方案

res.writeHead(301,
  {Location: 'http://whateverhostthiswillbe.com'}
);
res.end();

试试这个代码。这个很有魅力!!!!!!。 首先创建一个
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);
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;
module.exports = {
    'secretKey': '12345-67890-09876-54321',
    'mongoUrl' : 'mongodb://localhost:27017/redirect'
}
 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");
    });
接下来创建一个
routes
文件夹,将此文件放入其中
urls.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);
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;
module.exports = {
    'secretKey': '12345-67890-09876-54321',
    'mongoUrl' : 'mongodb://localhost:27017/redirect'
}
 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");
    });
接下来创建一个配置文件,以便您可以提供连接
config.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);
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;
module.exports = {
    'secretKey': '12345-67890-09876-54321',
    'mongoUrl' : 'mongodb://localhost:27017/redirect'
}
 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");
    });
现在创建一个服务器文件,如
express.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);
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;
module.exports = {
    'secretKey': '12345-67890-09876-54321',
    'mongoUrl' : 'mongodb://localhost:27017/redirect'
}
 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运行

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Url = new Schema({
    shortUrl:
    {
        type : Number
    },
    url:
    {
        type : String
    }
        });

module.exports = mongoose.model('url', Url);
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;
module.exports = {
    'secretKey': '12345-67890-09876-54321',
    'mongoUrl' : 'mongodb://localhost:27017/redirect'
}
 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");
    });

无论何时您想发布使用
http://localhost:3000/url/num
并以json格式提供详细信息。无论何时,只要您想获得。,重定向到任何页面使用
http://localhost:3000/url/:shrot
。这里:除了一个数字之外,没有什么可以传递参数。希望这对您有所帮助。

URL实际上存储为
www.google.com
,而不是
https://www.google.com/
?如果可能的话,您可能应该将其存储为一个合适的URL开始(即包括协议)。
//不起作用
-当您导航到这样一个地址时,您在浏览器中看到了什么?您如何通过ajax调用此路由?您是否获得了函数
shortUrl的代码。查找
页面上什么都没有发生,即使我做了一个测试,如果我使用console.log(urlSearch),它也会显示正确的地址。但是,我确实在终端上收到了这个“警告”:未处理PromisejectionWarning:未处理的承诺拒绝(拒绝id:1):CastError:在模型“shortUrl”的路径“shortUrl”处,对值“www.google.com”的转换失败