美文网首页我爱编程
“真实世界”全栈开发-3.12-标签列表

“真实世界”全栈开发-3.12-标签列表

作者: 桥头堡2015 | 来源:发表于2018-02-12 13:09 被阅读8次

我们的博客平台上想显示所有的标签列表。如果用关系型数据库,标签需要自己的一张表,每一行存储相关的博文ID。MongoDB和Mongoose可以很容易地实现这个功能,而不需要做大的改动。

首先,我们为标签系统创建自己的路由对象。

新建routes/api/tags.js文件:

const router = require('express').Router();
const mongoose = require('mongoose');
const Article = mongoose.model('Article');

module.exports = router;

并注册到API主路由上。往routes/api/index.js里加入:

router.use('/profiles', require('./profiles'));
router.use('/articles', require('./articles'));
// +++
router.use('/tags', require('./tags'));
// +++
```js

接下来就是见证奇迹的时刻了。合用Mongoose提供的`[Model.find](http://mongoosejs.com/docs/api.html#find_find)`和[`Query.prototype.distinct`](http://mongoosejs.com/docs/api.html#query_Query-distinct)方法,可以很轻松地获取所有用到过的标签列表——既不需要新建模型,也不需要做数据库的迁移。

在`routes/api/tags.js`中加入如下代码:

```js
router.get('/', (req, res, next) => {
  Article.find().distinct('tagList')
    .then(tags => res.json({tags}))
    .catch(next);
});

相关文章

网友评论

    本文标题:“真实世界”全栈开发-3.12-标签列表

    本文链接:https://www.haomeiwen.com/subject/klertftx.html