Intereting Posts
Экспресс-просмотр кэша В чем разница между «npm update -g», «npm upgrade -g», «npm install -g npm» и «n stable»? Перезагрузка узла кластера узла Node.js после получения kill & pgrep? Перенос сервера Parse на IBM bluemix Возможно ли получить твиты из более чем одной конкретной учетной записи через API Twitter? Ошибка машинописного файла: свойство ‘user’ не существует в типе ‘Request’ Подключить или выполнить промежуточное ПО для изменения ответа. ExpressJs Passportjs де-сериализует пользовательский объект для каждого запроса маршрута Socket.IO – Как изменить параметр значения тайм-аута на стороне клиента? Сделать динамический запрос с помощью Mongoose Что случилось с «$ in» в мангусте NodeJS ExpressJS – как регистрировать ошибки для производственного сервера? express-session, connect-redis и einaros / ws Как использовать протокол PROXY для получения реального IP-адреса клиента? Ошибка компиляции узла openindiana без компилятора C

LoopbackJS: HasAndBelongsToMany, как запросить / фильтровать по свойству отношения?

В настоящее время я работаю над своим первым проектом Loopbackjs и сталкиваюсь с кажущейся простой проблемой: скажем, у меня есть модель «Почта» и модель «Тег». Сообщение имеет и принадлежит многим тегам.

Теперь мне нужно перечислить все сообщения с конкретными тегами. Я просто не могу понять, как создать запрос с Loopback, который достигает этого. Я думал, что это сработает, но это не так: Posts.find( {where: {tag.id: {inq: [1, 4]}}} );

Я был бы очень признателен за любую помощь.

Это не так просто, как это должно быть, чтобы выполнить фильтр по некоторым связанным свойствам. Существует запрос тянуть выдающийся, но он был открыт в течение длительного времени. Насколько я вижу, единственный способ фильтрации – это основная модель, поэтому вы можете:

 Tags.find({"include":"posts","where":{"id":{"inq":[1, 4]}}}) 

К сожалению, вам нужно будет выполнить дополнительную работу, чтобы получить хороший список сообщений из результатов, которые вы вернетесь.

EDIT. Вы также можете получить все сообщения и только вернуть tags, соответствующие вашему запросу, с помощью scope , со следующим:

 Posts.find({ "include": { "relation": "tags", "scope": { "where": { "id": { "inq": [1, 4]} } } } }); 

В обратном вызове запроса вы можете привести результат в следующий код перед его возвратом:

 var finalresult = instance.filter(function(post) { return post.toJSON().tags.length > 0; }); 

Преимущество в том, что возвращенные результаты отформатированы так, как вы ожидали. Тем не менее, производительность моего второго примера может быть крайне низкой, так как она всегда будет возвращать все ваши сообщения, если вы не укажете фильтр или пейджинг на уровне Post. Это, в основном, Left Join, где вам нужен Inner Join, который Loopback просто не может сделать в данный момент.

Я пришел сюда с той же проблемой, но после некоторых исследований я добрался до этого решения.

Я собираюсь использовать пример: модель Provincias hasAndBelongsToMany Cantones.

Чтобы получить: / api / Provincias / 1 / cantones

Вы можете использовать в своем угловом коде:

Provincias.cantones ({‘id’: 1});