nodejs和mongodb中用于博客的REST API

时间:2018-11-25 19:08:24

标签: node.js mongodb

我很难增加标签架构的articleCount字段。

标记架构:

let tagSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    createdAt: {
        type: Date,
        required: true
    },
    articleCount: {
        type: Number,
        default: 0
    }
})

文章shema:

let articleSchema = new Schema({
    ...
    tags: {
        ref: 'tags',
        type: [Schema.Types.ObjectId]
    }
})

所以我需要每次添加新文章时,列出的所有标签都增加一。

要获得这样的东西:

POST /api/articles

{
    ...
    "tags": ["5bfaaedbfe407d345ba2745b", "5bfab93ff73c0d117bd55ea6"]
}

GET /api/tags

{
    "articleCount": 1,
    "_id": "5bfaaedbfe407d345ba2745b",
    "name": "javascript",
    "createdAt": "1970-06-28T18:09:05.485Z",
    "__v": 0
},
{
    "articleCount": 1,
    "_id": "5bfab93ff73c0d117bd55ea6",
    "name": "css",
    "createdAt": "1970-06-28T18:09:05.485Z",
    "__v": 0
}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

基本上有两种方法。

  1. 找到一个可帮助您生成MongoDB接口和逻辑的ORM框架。有诸如Mongoose之类的特定于DB的ORM,也有诸如Loopback之类的通用跨语言,跨DB ORM框架。这些通常会要求您提供一个架构,它们会生成API。优点是一切都照顾好了,但需要一些学习曲线,灵活性较差。

  2. 手动编写一组您需要照顾的api并自己设置路由器路径,对于每个路由,您可以在操作详细信息中创建函数和代码。为此,您将需要为自己的模式(也许每个模式单独)编写CRUD。优点是(较小的)开发周期更快,功能更小,功能更有限,灵活性更高。

有关REST接口的正式MongoDB文档是一个开始研究的好地方。 https://docs.mongodb.com/ecosystem/tools/http-interfaces/#rest-interfaces