【问题标题】:how do i redirect in express with a given ID?如何使用给定的 ID 快速重定向?
【发布时间】:2020-05-25 04:15:47
【问题描述】:

这段代码让我的应用从我的 mongoDB 中随机选择一个文档

router.get("/random", (req, res) => {
  try {
    postModel.countDocuments().exec(function(err, count) {
      var random = Math.floor(Math.random() * count);
      postModel
        .findOne()
        .skip(random)
        .exec(function(err, randomPost) {
          console.log(randomPost);
          res.render("play", { randomPost });
        });
    });
  } catch (err) {
    res.json({ msg: err });
  }
});

我有一个名为 play.ejs 的 ejs 模板,它使用随机选择的文档成功呈现文件。

但我希望它每次都有一个类似 /play/"idOfRandomChosenDocument" 的 URL,而不是 /random。我该怎么做呢? 我是否需要创建router.get("/play/:postid"),如果需要,如何传入随机文档的 id 并成功加载正确的文档对象?

【问题讨论】:

  • 使用参数,。 router.get('/random/:id')。并且 req.param 将具有 id。

标签: javascript node.js mongodb express ejs


【解决方案1】:

你的代码应该是这样的。

   router.get("/play/:postid", (req, res) => {
  try {
    postModel.countDocuments({_id:req.params.postid}).exec(function(err, count) {
      var random = Math.floor(Math.random() * count);
      postModel
        .findOne()
        .skip(random)
        .exec(function(err, randomPost) {
          console.log(randomPost);
          res.render("play", { randomPost });
        });
    });
  } catch (err) {
    res.json({ msg: err });
  }
});

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 2017-08-28
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2022-06-24
    相关资源
    最近更新 更多