Вместо базового модуля CRUD articles
, который указан, у меня есть аналогичный код, называемый friends
. A friend
- это просто еще один user
, но он отделен от модуля user
. Я пытаюсь сделать это, когда пользователь выбирает, чтобы увидеть список друзей, они видят список друзей, а не все те, которые хранятся в коллекции friends
в монго. Структура friend
в коллекции Монго является:Немедленный вызов api по умолчанию при выборе списка - MEAN.JS
{
"_id" : ObjectId("587b9e16d1bdf314181b354e"),
"user" : ObjectId("5867c5e92fa4e91008788f80"),
"added" : ISODate("2017-01-15T16:06:46.975Z"),
"friend" : {
"firstName" : "b",
"lastName" : "b",
"email" : "[email protected]",
"profileImageURL" : "modules/users/client/img/profile/default.png",
"roles" : [
"user"
],
"created" : "2017-01-11T17:28:19.849Z",
"__v" : 0,
"username" : "bbbbbb",
"provider" : "local",
"displayName" : "b b",
"_id" : "58766b337f091f842addfd5a"
},
"__v" : 0
}
Так user
поля пользователя, который этот friend
назначается и friend
объекта является фактическим другом.
Я получил апи вызов работает достаточно легко, просто добавив еще один маршрут, который принимает пользователя в качестве параметра:
/апи/: USERID/друзей /: friendId
/API/: идентификатор пользователя/друзей
Я понял, что (и это то, что по умолчанию в MEAN.JS), на клиенте, если пользователь выбирает, чтобы увидеть список друзей, вызов немедленно делается, чтобы увидеть ВСЕ(/api/friends
) друзей в коллекции в монго.
Я просмотрел весь клиент, но не вижу, где этот звонок сделан!
Что я хочу сделать, это найти, где этот вызов сделан, и изменить его так, чтобы он включал :userId
в качестве параметра, чтобы получить доступ к этим друзьям.
Как он смотрит на меня, как только вы нажмете шаблон для просмотра друзей, контроллер должен сделать ngResource
запрос к FriendsService
, чтобы получить друг конкретного пользователя:
function FriendsService($resource) {
return $resource('api/:userId/friends/:friendId', {
userId: '@user',
friendId: '@_id'
}, {
update: {
method: 'PUT'
}
});
}
. .. но, очевидно, это не так.
EDIT:
Я рад, что $stateProvider
настроен в конфигурации на стороне друзей модуль клиента:
$stateProvider
.state('friends', {
abstract: true,
url: '/friends',
template: '<ui-view/>'
})
.state('friends.list', {
url: '',
templateUrl: 'modules/friends/client/views/list-friends.client.view.html',
controller: 'FriendsListController',
controllerAs: 'vm',
data: {
pageTitle: 'Friends List'
}
});
Так что, когда я ударил URL /friends
, что должно произойти, так как не связан ли контроллер или шаблон?
Однако в friends.client.config.js
, сервис меню:
// Add the dropdown list item
menuService.addSubMenuItem('topbar', 'friends', {
title: 'List Friends',
state: 'friends.list'
});
Так мое понимание, что если опция подменит в список друзей в пользовательском интерфейсе щелкает, он использует то состояние, которое отображает на FriendsListContoller
,
function FriendsListController(FriendsService) {
var vm = this;
vm.friends = FriendsService.query();
}
Так будет запрашивать ngResource
в FriendsService
. FriendsService
:
function FriendsService($resource) {
return $resource('api/:userId/friends/:friendId', {
userId: '@user',
friendId: '@_id'
}, {
update: {
method: 'PUT'
}
});
}
Так что мне кажется, что, когда пользователь выбирает, чтобы увидеть список друзей, /api/:userId/friends/:friendId
следует.
Дело в том, что я могу видеть в моей консоли, что при выборе, чтобы просмотреть список друзей, вызов /api/friends
делается вместо того, чтобы, который не получает все друзей в коллекции в Монго независимо от того, кто они назначены :
вызов явно делается от клиента где-то, но не могу найти где.
3 вопросы:
- Является ли моя логика правильная? В том смысле, что, когда пользователь выбирает просмотр списка друзей, запрашивается услуга?
- В службы, PARAMS
userId
иfriendId
устанавливаются@user
(который я установил) или@_id
(который был уже там). Моя презумпция заключалась в том, что это поля в коллекции в монго, верно? В любом случае я могу отлаживать значения, которые передаются в этот вызов? - Где находится звонок «/ api/friends»? Как, по логике вещей в моей голове, я не могу найти, где она вызывается в клиенте (вероятно, потому что я не знаю достаточно о структуре MEAN.JS пока)
Начальный раздел этого ответа, который я уже выполнил. Раздел, над которым я борюсь, - это то, где вы упоминаете: * «вам нужно добавить необходимую логику ...» *. Здесь я изо всех сил пытаюсь, поскольку, насколько я вижу, при запросе списка друзей, вызов '/ api /: userId/friends' ** должен быть ** сделан на стороне клиента службы друзей, но'/api/друзья - это вызов, который делается вместо этого. Я обновлю свой вопрос и поставлю вывод в свою консоль – wmash