如何创建一个简单的获取表单,该表单将根据搜索字段的值(MONGODB 和 Node.js)创建动态路由

How create a simple get form that will create a dynamic route, depending on the value of the search field (MONGODB and Node.js)

我希望在数据库中搜索用户在获取表单中输入的值。

后端非常简单,我知道如何搜索抛出数据库并呈现结果..

app.get('search/:id', function(req, res) {
  var id  = req.param("id");

  mongoose.model('Something').find({
     // the field that i want find. For example:
      _id: id // This will search for the id field in the database, them will return a object if finds a match.
  }, function(error, object){
        if (error) {
          res.send(error);
        }
        else {
          res.send(object);
        }
     }
  );
});

这个脚本可以工作。

现在我遇到了 HTML 的问题。

我需要一个将用户发送到 /search/SOMETHING 用户想要搜索的获取表单,但我不知道如何动态地更改 url..

非常欢迎任何帮助。

如果您不知道如何在 HTML 中实现所需的行为,您仍然可以在后端完成 - 通过设置重定向。提交表单后的传入请求类似于 ?inputName=user search string

然后您可以获取查询的值并执行到您的路由的内部重定向

app.get('search', function(req, res) {
  res.redirect('/search/' + req.query["inputName"]);
});

要让表单以类似快速的方式传递 GET 参数,您需要挂钩表单的 onSubmit,然后触发 XHR/ajax 请求而不是表单-post.

或者您可以通过 req.query.inputFieldName 读取查询字符串,如果您认为 url 看起来像 /search/?inputFieldName=AwesomeSearchString

我会采用 XHR/ajax 方式,因为它还可以防止页面重新加载,从而改善用户体验。