我在使用nodejs和mongodb时遇到了一个奇怪的错误。当我调用array.pop()时,我收到此错误:
var name = docs.pop().screen_name;
^
TypeError: undefined is not a function
at null._onTimeout (test.js:26:29)
at Timer.listOnTimeout (timers.js:110:15)
这是我的代码:
function get_tweets(docs, callback) {
setTimeout(function () {
if (docs.length == 0) {
return true;
} else {
var name = docs.pop().screen_name;
client.get('statuses/user_timeline', {
screen_name: name,
limit: 20
}, function (error, tweets, response) {
if (error) {
console.log(error);
if (error.code == 88) {
console.log(error);
}
} else {
tweets.sort(function (a, b) {
return b.retweet_count - a.retweet_count;
});
var top = tweets.slice(0, 3);
callback(top);
}
});
}
}, 10000);
}
var url = 'url';
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
var col_accounts = db.collection('accounts');
// Insert a single document
// Get first documents from cursor
col_accounts.find().toArray(function(err, results) {
console.log("gots the stuff");
var col_tweets = db.collection('tweets');
console.log(results[0]);
get_tweets(results, function(top){
col_tweets.insert(top, {w:1}, function(err, result) {});
if(results.length > 0){
get_tweets(results.pop());
}
});
db.close();
});
});
我认为应该没有错误。 node.js是否支持.pop()?它似乎适用于我在遇到此问题后尝试过的测试用例。如果你们知道如何解决这个问题我会很感激。
谢谢!