#mongodb #deployd
#mongodb #deployd
Вопрос:
У меня есть API Deployd, который предоставляет структуру json, подобную этой:
[
{id: "1"
username: "john",
password: " ..... ",
email: "example@gmail.com",
coins: 60,
badges: [ ],
courses:[
{ id: "123456",
title: "Animals",
grades_per_module: [ [30], [28, 26], [25, 24]]
.....
},
{ id: "112233",
title: "Food",
grades_per_module: [ [20, 25, 27], [22]]
.....
}
]
},
{id: "2"
username: "mark",
password: " ..... ",
email: "ex@gmail.com",
coins: 40,
badges: [ ],
courses:[
{ id: "123456",
title: "Animals",
grades_per_module: [ [27], [21, 30], [30, 30]]
.....
}
]
}
]
Затем мне нужно удалить курс intere с id =»112233″ пользователя «john», используя код angular.
Итак, я использую этот код, но он не работает:
this.http.put('http://localhost:2403/users/1',
{ "courses": { $pull: { "id": 112233 } }
}).subscribe( ..... )
Deployd API возвращает мне положительное сообщение, но курс на самом деле не удаляется из пользовательского объекта.
Кто-нибудь может мне помочь?
Комментарии:
1. На самом деле ваш вопрос больше касается реализации deployd, но на самом деле вы не показываете этот код в вопросе. Вместо этого вам нужно изменить содержимое вопроса, чтобы показать этот код. Кроме того, не имеет значения, что запрос поступает из Angular, кроме того, это PUT, где API ожидает PUT и любое ожидаемое тело запроса. Однако я настоятельно не рекомендую API раскрывать внутренний синтаксис базы данных. Во всяком случае, путь запроса должен быть примерно таким
/users/:id/removeCourse/:courseId
, где операция обновления фиксирована в методе, а параметры поступают из URI2. Тем не менее, «положительное сообщение», вероятно, указывает на то, что либо документ не был сопоставлен, либо не был изменен, и на самом деле это индикаторы того, что параметры неверны. На самом деле
id: "123456"
это «строка», и вы, похоже, отправляете контент, который, вероятно, интерпретируется какnumeric
.3. Спасибо за советы. Честно говоря, до сих пор я всегда пытался манипулировать внутренними элементами базы данных напрямую с помощью угловых запросов http, как я уже показывал ранее. Но, как вы сказали, это не очень хорошая практика. Я не знаю, как манипулировать содержимым базы данных с помощью функций Deployd и передавать параметры функций в URI, как вы говорили мне раньше.
4. Что касается структуры Json, которую я показывал ранее, не могли бы вы показать мне пример этого кода, в котором я могу удалить из базы данных весь курс конкретного пользователя или изменить только некоторые внутренние свойства с помощью функции Deployd и передачи параметров в URI? Большое вам спасибо.