loopback Find () where предложение не возвращает ожидаемых результатов

Я использую loopback для обслуживания API для своего приложения, и я попытался изменить запрос GET для некоторых данных.

На данный момент запрос получает все результаты для определенного API:

People.find({
    where: {
      'town': 'name of a town'
    }
  }).$promise
  // Promise is fulfilled and people returned
  .then(function(results) {
    $scope.people = results;
  })
  // Promise is rejected and error catched
  .catch(function(err) {
    $scope.errors.PeopleFind = JSON.stringify(err.data.error.message ?
      err.data.error.message :
      err.data.error.errmsg
    );
  }); 

Я уже пробовал добавить одинарные кавычки к предложению where или сделать что-то вроде .find({ where : { town : 'name of a town' }}.

Независимо от того, где я помещаю кавычки, всегда получается весь пакет. Как мне запросить только те результаты, которые меня интересуют?

заранее спасибо


person mnemosdev    schedule 09.03.2017    source источник
comment
Это делается во внешнем интерфейсе с уже запрограммированной конечной точкой и хуками.   -  person mnemosdev    schedule 09.03.2017


Ответы (3)


Ответ нашла благодаря коллеге, напишу здесь ответ


People
            .find({
                filter: {
                    where: {Town : currentUserTown}
                }
            })

В документации по фреймворку loopback не говорится, что вам нужно применить объект фильтра для фактической фильтрации результатов, на самом деле вы можете проверить документацию с помощью этого примера, который они написали:

Cars.find({where: {carClass:'fullsize'}});

Перед объектом предложения where вам нужно написать объект фильтра, содержащий предложение, которое должно решить проблему с запросом.

person mnemosdev    schedule 09.03.2017

используйте like вот так:

People.find({where: {Town : like: {currentUserTown}}}, function(err, res){
//code goes here.
})

и убедитесь, что вы добавили strictObjectIDCoercion в файл json:

{
  "name": "People",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true,
    "strictObjectIDCoercion": true
  },
  "properties": {
 // rest of json file ...

надеюсь это поможет.

person Ali Bahrami    schedule 10.04.2018
comment
Спасибо Али Бахрами. Ваш ответ мне очень помог. - person Henok Tesfaye; 05.10.2018

Это распространенная ошибка, пожалуйста, проверьте конфигурационный файл вашей модели People.json и сделайте town: {"type":"string"}

person ritesh    schedule 09.01.2020