簡體   English   中英

Node.js-如何在Express和Mongoose中按名稱路由?

[英]Nodejs - How to route by name in url with express and mongoose?

我有一個具有作者CRUD路由的Express 4服務器:

    router.get('/authors', AuthorsController.index);
    router.post('/authors', AuthorsController.store);
    router.get('/authors/:name', AuthorsController.show);
    router.put('/authors/:name', AuthorsController.update);
    router.delete('/authors/:name', AuthorsController.remove);

我發現的大多數教程的路由都是/authors/:id ,然后執行Author.findById(req.params.id) 取而代之的是,我希望它是作者的名字,因此有一些可讀的URL,例如: /authors/jk-rowling

我是否需要將連字符的字符串存儲在Authors模型上,用express和Mongoosejs實現此目的的最佳方法是什么?

我的作者控制器當前看起來像這樣:

const AuthorsController = {
  async index(req, res){
    const authors = await Author.find().populate('books');
    res.send(authors);
  }
};

(我正在將express-async-errors包用於帶有express的async-await功能)

為帶有Express和Mongoose的CRUD REST API建立具有人類可讀URL的路由的最佳方法是什么?

您可以索引名稱字段,並在視圖中按名稱查找(假設名稱是“作者”的屬性)

這不需要更改數據庫模型。 您可以根據需要通過ID或名稱進行搜索。

例如

 router.get('/authors/:name', AuthorsController.show);

將有下面的看法

const AuthorsController = {
  async show(req, res){
    const authors = await Author.find({'name':req.params.name}).populate('books');
    res.send(authors);
  }
};

正如你在問題中提到,你將不得不產生像含代替空格或其他特殊字符連字符一個將被存儲在模型和名稱蛞蝓

暫無
暫無

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

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