javascript - 如何使用 Nodejs 重定向到另一个页面,例如 google?

标签 javascript node.js express

我正在尝试获取一个将存储在 short 变量中的数字。然后我在数据库中查找与该号码匹配的特定 shortUrl。如果我找到它,我希望响应是完整的 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

    });
});

我该怎么做?

最佳答案

试试这个代码。这很有魅力!!!!!! 首先创建一个 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);

接下来创建一个 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;

接下来创建一个配置文件,这样你就可以给连接 config.js

module.exports = {
    'secretKey': '12345-67890-09876-54321',
    'mongoUrl' : 'mongodb://localhost:27017/redirect'
}

现在创建一个服务器文件,如 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");
    });

Output : Run the code as node express.js

每当你想发布时使用http://localhost:3000/url/num并以json格式提供详细信息。无论何时你想要获得即重定向到任何页面使用 http://localhost:3000/url/:shrot。这里:short 除了一个数字之外什么都不应该传递给一个参数。希望这对你有帮助。

关于javascript - 如何使用 Nodejs 重定向到另一个页面,例如 google?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45789526/

相关文章:

javascript - 查询从用户返回值中的 MongoDB 问题

node.js - 如何使C8输出总代码覆盖率%?

node.js - Sequelize : Don't return password on Create

node.js - 关于快速验证的几个问题

javascript - 在我更改 View 之前 JQGrid 寻呼机不显示

javascript - 提升没有声明为 'var' 的 JS 变量

javascript - 将模拟服务注入(inject) Angular Testing 的未知问题

javascript - 将文本从一个 html 加载到另一个 html 文件中的两列

javascript - 如何使用 express 作为直通代理?

javascript - 我正在尝试解析从 firebase 查询中获取的数据,但数据没有得到解析