2015-07-15 9 views
1

Я использую библиотеку request, чтобы совершать вызовы из одного приложения парусов другому, который предоставляет конечные точки проекта по умолчанию. Он отлично работает, когда я запрашиваю не-id-поля, но мне нужно запустить некоторые запросы, передав массивы id. Проблема в том, что в тот момент, когда вы указываете id, учитывается только первый идентификатор, фактически не разрешая такой запрос.Запрос оконечных точек sailsjs по массиву id с использованием запроса

Есть ли способ обойти это? Я мог бы переключиться на другой атрибут, если все остальное не удастся, но мне нужно знать, есть ли подходящий способ.

Вот как я запрашивая:

var idArr = [];//array of ids 
var queryParams = { id: idArr }; 
var options: { 
    //headers, method and url here 
    json: queryParams 
}; 
request(options, function(err, response, body){ 
    if (err) return next(err); 
    return next(null, body); 
}); 

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

ответ

2

API-интерфейсы API Sails позволяют использовать один и тот же валидный запрос langauge, который в противном случае вы использовали бы в коде.

Вы можете непосредственно передать массив идентификаторов в получить называют получить объекты следующим

GET /city?where={"id":[1, 2]} 

См here больше.

Удачи!

+0

По какой-то причине это не работало для меня в последний раз. Повторила ту же ошибку и, наконец, подумала, что я не использую двойные кавычки. Это груз с моей головы. Благодаря! – galactocalypse

+0

Рад, что я мог помочь! –

1

Хорошо, я переключился на хакерское решение, чтобы двигаться.

Для всех моделей, которые нуждались в запросе массивами id, я добавил дополнительный атрибут модели. Назовем это code. Затем, в afterCreate(), я обновил code и установил его равным id. Это требует дополнительного вызова базы данных, но это прекрасно, поскольку он вызывается только один раз - когда объект создается.

Вот код.

module.exports = { 
    attributes: { 
     code: { 
      type: 'string'//the secondary attribute 
     }, 
     // other attributes 
    }, 
    afterCreate: function (newObj, next) { 
     Model.update({ id: newObj.id }, { code: newObj.id }, next); 
    } 
} 

Обратите внимание, что newObj не модель объекта, так как даже я верить. Поэтому мы не можем просто обновить его code и позвонить по телефону newObj.save().

После этого в запросах, содержащих id массивов, замена id на code заставляет их работать должным образом!

 Смежные вопросы

  • Нет связанных вопросов^_^