簡體   English   中英

MongoDB RESTful API結構

[英]MongoDB RESTful API structuring

因此,我試圖創建一個與reddit相似的RESTful API,其中包含用戶,主題(subreddits),帖子和評論。 為此,我正在嘗試使用Node.js和MongoDB。

到目前為止,這是github倉庫: https : //github.com/edmassarani/reddit-clone

唯一的問題是我不知道如何構造文檔的刪除及其“依賴性”,因為用戶可能擁有一個主題,該主題有帖子,這些帖子有評論,而這些評論有作者,那么我該怎么做刪除用戶而不會留下沒有所有者的主題或沒有主題的帖子等等? 如果我使用關系數據庫會更容易嗎?

我可以在您的Github存儲庫上看到,您使用標准化的數據模型像在關系數據庫中一樣構造了模型(請注意:您在問題上將關系數據庫命名為“ SQL數據庫”):

示例:在Topic.js中,您引用帶有參考的文章:

posts: [
    {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Post',
    },
  ],

它當然可以像這樣工作,但是使用NoSQL以及特別是MongoDB,您可以將文檔嵌入到另一個文檔中。

為什么不像這樣將Post模式直接嵌入到Topic中:

  posts: [
    {

    title: {
        type: String,
        required: true,
      },
      body: {
        type: String,
        required: true,
      },
      ...
      upvotes: [
        {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'User',
        },
      ],
      comments: [
        {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'Comment',
        },
      ],
    },
  ],

據我了解,如果刪除某個主題,則與此主題相關的所有帖子都必須刪除。

使用嵌入式架構,只需刪除一個即可。

我不知道在您的上下文中嵌入式是否是最好的解決方案(由於perfs),但是您有兩種解決方案:

  • 使用不同的架構(模型文件),您必須手動級聯刪除(例如:刪除主題時,必須找到主題中的所有帖子引用並將其刪除...)
  • 重構和嵌入:刪除主題也將刪除注釋。

有關嵌入式架構的更多信息,請參見mongodb官方文檔: https : //docs.mongodb.com/manual/core/data-model-design/

暫無
暫無

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

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