Ich bin neu bei Knoten und ich versuche, die Twitter-ID einer Gruppe von Benutzern zu holen. Das Modul akzeptiert ein Array von Bildschirmnamen und iteriert darüber, um die userId abzurufen und an ein Array zu senden. Das Problem ist, ich kann dieses Array nicht zurückgeben. Ich kann im Rahmen der Funktion darauf zugreifen, aber ich kann nicht darauf zugreifen. Ich lese die Antworten auf ähnliche Fragen here und here über variable Shadowing und versuchte es, aber es funktioniert nicht.NodeJs - kann nicht auf den aktualisierten Wert des Arrays außerhalb des Funktionsumfangs zugreifen
Ich bin mir ziemlich sicher, dass ich einen dummen Fehler mache. Kannst du dir bitte den Code ansehen und mir hier helfen?
// extractIDs.js
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_TOKEN_KEY,
access_token_secret: process.env.TWITTER_TOKEN_SECRET
});
exports.getIDs = function (screenNames) {
var ids = ['something'];
for (var i = 0; i < screenNames.length; i++) {
client.get('users/show', {
screen_name: screenNames[i],
include_entities: false
}, function (error, tweets, response) {
ids.push(tweets.id);
console.log(ids) // works fine
});
}
return ids; //'something' gets returned instead of the populated ids
}
// server.js
app.post('/sendlist', bodyParser.urlencoded({
'extended': 'true'
}), function (req, res) {
res.json(extractIDs.getIDs(req.body.screen_name));
}
);
// controllers.js
.controller('testCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.printIt = function() {
console.log('stuff from controller');
$http({
method: 'POST',
url: '/sendlist',
data: {
"screen_name": ['aminspeaks', 'nodejs']
}
}).then(function successCallback(response) {
console.log('Got This response from server-- ' + response.data); // "Got This response from server-- something"
},
function errorCallback(response) {
console.log('Shit went down bro');
});
};
console.log('testCtrl is working');
}])
Ich wusste, dass ich einen dummen Fehler machte. –