как удалить дочерний объект в mongodb - PullRequest
0 голосов
/ 24 сентября 2019

ниже мой магазин json в mongodb

[
  {
    "type": "mailbox",
    "id": 0,
    "name": "Suresh Adling",
    "mailBoxType": "private",
    "children": [
      {
        "id": 1,
        "name": "Inbox",
        "type": "folder",
        "mailBoxType": "private",
        "children": [],
        "userName": "suresh.adling",
        "canEdit": false
      },
      {
        "id": 2,
        "name": "Deleted Items",
        "type": "folder",
        "mailBoxType": "private",
        "children": [],
        "userName": "suresh.adling",
        "canEdit": false
      },
      {
        "id": "fc761eaa-e2c8-493f-91d3-04d38c730534",
        "name": "vishal patil_deactivated",
        "mailBoxType": "private",
        "type": "Folder",
        "children": [
          {
            "id": "214f08d7-32e1-4871-aa1d-2c923882a302",
            "name": "Inbox",
            "type": "Folder",
            "mailBoxType": "private",
            "children": [],
            "userName": "suresh.adling",
            "canEdit": false
          },
          {
            "id": "fb91e540-1b23-438a-a1b3-7a08d0a60fbf",
            "name": "Deleted Items",
            "type": "Folder",
            "mailBoxType": "private",
            "children": [],
            "userName": "suresh.adling",
            "canEdit": false
          }
        ],
        "userName": "suresh.adling",
        "canEdit": false
      },
      {
        "id": "1d172869-18b4-4c11-a8bf-e162ec0fd260",
        "name": "swapnil N_deactivated",
        "mailBoxType": "private",
        "type": "Folder",
        "children": [
          {
            "id": "b5b86995-43e6-4798-ad94-20f2598a2cf1",
            "name": "Inbox",
            "type": "Folder",
            "mailBoxType": "private",
            "children": []
          },
          {
            "id": "13f384ea-c2f6-48c3-a67f-dc712b7917a8",
            "name": "Deleted Items",
            "type": "Folder",
            "mailBoxType": "private",
            "children": []
          }
        ]
      }
    ],
    "userName": "suresh.adling",
    "canEdit": false
  }
]

, и в этом объекте json снизу находятся базы данных

{
        "id": "fc761eaa-e2c8-493f-91d3-04d38c730534",
        "name": "vishal patil_deactivated",
        "mailBoxType": "private",
        "type": "Folder",
        "children": [
          {
            "id": "214f08d7-32e1-4871-aa1d-2c923882a302",
            "name": "Inbox",
            "type": "Folder",
            "mailBoxType": "private",
            "children": [],
            "userName": "suresh.adling",
            "canEdit": false
          },
          {
            "id": "fb91e540-1b23-438a-a1b3-7a08d0a60fbf",
            "name": "Deleted Items",
            "type": "Folder",
            "mailBoxType": "private",
            "children": [],
            "userName": "suresh.adling",
            "canEdit": false
          }
        ],
        "userName": "suresh.adling",
        "canEdit": false
      },

как удалить остальные jp api-узлы и каксоздать эти API в узле?

Я в новом в этом домене.я хочу нормальное сообщение об успехе

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

пришлите мне, пожалуйста, фрагменты кода для этой статьи.

0 голосов
/ 24 сентября 2019

Я думаю, что вы искали оператор $ pull, вы должны предоставить соответствующий запрос, например, идентификатор элемента массива, который нужно удалить, больше в документации mongodb.https://docs.mongodb.com/manual/reference/operator/update/pull/#up._S_pull

У меня есть коллекция магазинов в mongoDB, я сделал магазин:

    {
    "children": [
        {
            "id": "First child",
            "value": 5
        },
        {
            "id": "Second child",
            "value": 10
        },
        {
            "id": "Third child",
            "value": 15
        },
        {
            "id": "Fourth child",
            "value": 20
        }
    ],
    "_id": "5d8b28c13ff93437f875d263",
    "name": "Johnny",
    "color": "Blue",
    "__v": 0
}

В nodeJS я сделал модель магазина:

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const StoreSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    color: {
        type: String,
        required: true
    },
    children: {
        type: Array,
        required: true
    }
});

const Store = mongoose.model('stores', StoreSchema);

module.exports = Store

И способ удаления его потомков:

    router.delete("/children", async (req,res) =>{
    const {storeId, childId} = req.query
    const query = Store.update({ _id: storeId },{ $pull: { children: { id: childId}}});
    try {
        const result = await query.exec()
        res.status(200).send(result)
    } catch (err){
        res.send(err)
    }
})

После вызова API от почтальона: Снимок экрана вызова API

Объект хранилища обновлен и теперь выглядит так:

{ 
   "_id":"5d8b282a9fb35d0714c37550",
   "children":[ 
      { 
         "id":"Second child",
         "value":10
      },
      { 
         "id":"Third child",
         "value":15
      },
      { 
         "id":"Fourth child",
         "value":20
      }
   ],
   "name":"Johnny",
   "color":"Blue",
   "__v":0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...