Ich verwende Facebook Graph NodeJS API
, um user_posts
abzurufen. Die Antwort hat eine Paginierung und daher muss ich die Antwort durchlaufen, um alle Posts abzurufen. Ich verwende Facebook-Beiträge folgende Route zu holen, und ich bin Schleife über Paginierung mit get_user_statuses
Funktion:Response-Objekt ist nicht definiert, wenn es in einer Funktion übergeben
var posts = "";
function get_user_statuses(response_posts, res) {
var link_regex = /https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,}/g;
var isNextPageAvailable = true;
if ("paging" in response_posts) {
var nextPage = response_posts.paging.next;
isNextPageAvailable = true;
} else {
isNextPageAvailable = false;
}
for (var i = 0; i < response_posts.data.length; i++) {
var post = response_posts.data[i].message + " ";
if ("message" in response_posts.data[i]) {
posts += post.replace(link_regex, "");
}
}
if (nextPage !== undefined) {
request(nextPage, function (error, response, body) {
if (!error && response.statusCode === 200) {
get_user_statuses(JSON.parse(body));
} else {
console.log(error);
}
});
}
if (!isNextPageAvailable){
//Sending posts to facebook Modal
console.log(posts);
res.send(JSON.stringify({posts: posts})); //res is not defined here
}
}
router.post('/fbData', function (req, response, next) {
FB.setAccessToken(req.body.access_token);
FB.api('/me?fields=posts&posts.limit=1000', function (res) {
if (!res || res.error) {
if (!res) {
response.send(JSON.stringify({error: 'An error occurred. Please try again.'}))
}
response.send(JSON.stringify({error: response.error}));
return;
}
get_user_statuses(res.posts, response); //Passing response object here
});
});
Das Problem ist, dass response
Objekt aus einem ausdrücklichen route
bestand nicht in get_user_statuses
Funktion definiert ist. Jetzt habe ich zwei Frage:
- Warum Antwortobjekt nicht definiert ist?
- Gibt es einen besseren Ansatz, um diese Anordnung zu erreichen?
Hey vielen Dank für die Antwort. Ich habe einen eleganteren Weg gefunden, mein Ziel zu erreichen, indem ich den in meiner Antwort erwähnten Link benutzte. –