J'ai un contrôleur qui fait un autre appel API et boucle sur les résultats, créer des objets personnalisés et retourner le résultat.Comment appeler une autre API et renvoyer des données avec pagination?
Quelle est la meilleure façon d'ajouter la pagination et le filtre sur cela? Avant de le faire manuellement, je pense qu'il doit y avoir un moyen de le faire avec le framework Sails.
Mes codes actuels du contrôleur sont les suivants:
request.get({
url: 'https://api.nytime.com/v1/articles?apiKey=xxxx&source=Client1'
}, function(error, response, body) {
if (error) {
sails.log.error(error);
}
else {
var asd = JSON.parse(body);
if (asd.status == 'error') {
sails.log.error(asd.message);
return res.send(asd);
return false;
}
var newRtnStr = new Array();
var b = new Object();
for (var i = 0; i < asd.articles.length; i++) {
b = {
"title": "" + asd.articles[i]["title"],
"source": "" + asd.articles[i]["author"],
"description": "" + asd.articles[i]["description"],
"link": "" + asd.articles[i]["url"],
"category": "NYTimes",
"media": asd.articles[i]["urlToImage"],
"rssdate": "" + asd.articles[i]["IL.pubdate"],
"id": "" + i,
"createdAt": "" + asd.articles[i]["publishedAt"],
"updatedAt": "" + asd.articles[i]["publishedAt"]
}
newRtnStr.push(b);
}
return res.send(newRtnStr);
Ce que je pense que je ne suis pas en utilisant le modèle ici, son contrôleur tout ce qui est appelé de mes routes.
J'ai suivi le tutoriel décrivant comment utiliser les plans et le service pour filtrer et créer la pagination, mais je ne suis pas sûr de savoir comment l'utiliser, puisque mon modèle est vide ici.
Une fois que j'ai find.js sous le dossier blueprints et ActionUtilityService.js sous le dossier des services, le didacticiel dit appelez ce qui suit.
const Pagination = require('sails-pagination')
const buildParams = Pagination.build(q.query)
PublicNews
.find(buildParams)
.then((models) => {
return [
models,
PublicNews.count(buildParams)
]
})
Dans mon cas "PublicNews" est mon modèle, mais il est vide. Basé sur les codes ci-dessus, mon objet personnalisé qui a des données, et a besoin du filtre et de la pagination, s'appelle "newRtnStr".
Avez-vous vérifié si ce plugin (https://www.npmjs.com/package/sails- pagination) peut vous être utile? –
Vous ne pouvez pas faire la pagination côté client avec quelque chose comme angularjs? –
Merci pour vos commentaires, je ne peux pas utiliser la pagination côté client depuis que je construis et API, donc la pagination et le filtre doit être fait sur la fin du serveur. Je modifie la question ci-dessus et montre à quel point je suis confronté à la pagination des voiles. – ShyBoy