簡體   English   中英

Express和Mongoose中的網址參數

[英]Url parameter in express and mongoose

我用node / express和mongoose構建了一個基本的Web應用程序。 如何將Express參數中的:id替換為字符串

例如

貓鼬模型

var UserSchema = new Schema({
   name: String,
});

var User = mongoose.model('User', UserSchema);

假設現在用戶集合中有一個用戶名"Mr robot king"

app.get('/:id', function(req, res, next) {
    User.findOne({ _id: req.params.id }, function(err, user) {
       res.render('home');
    });
});

網址的結果

localhost:8080/5asdasd43241asdasdasd

我想要的是

localhost:8080/Mr-robot-king

從本質上講,這並不困難:

app.get('/:name', function(req, res, next) {
  var name = req.params.name.replace(/-/g, ' ');
  User.findOne({ name : name }, function(err, user) {
    res.json(user);
  });
});

一些注意事項:

  • 由於您的示例用連字符替換了空格,並且上面的代碼執行了相反的操作,因此在其中帶有實際連字符的用戶名將破壞此替換方案;
  • 如果允許用戶名包含URL中具有特殊含義的字符(如&? ),則在構建鏈接時,應對它們進行編碼。 因此,用戶名jill&bob將產生鏈接localhost:8080/jill%26bob
  • 您可能想在name字段中添加索引 ,以確保查詢快速。

編輯 :要生成這些鏈接(例如從EJS模板生成),可以使用如下所示的內容:

<a href="/<%= user.name.replace(/ /g, '-') %>">go to page</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM