这里是使用
的代码{{1}}
所以基本上我希望这个函数在我调用函数时返回值,当我在这个toArray函数中进行控制台登录时,它的罚款方法不是。 我只是不明白如何让这个工作
答案 0 :(得分:2)
您获取未定义值的原因是 toArray()
游标方法是异步的,并且可以随时完成。在您的情况下,它在您使用console.log()
后完成,因此当您访问它们时,这些值是未定义的。
要解决此问题,您只能使用 toArray()
功能的回调中的值。它看起来像这样:
function get_last_chat_time(steamid, callback){
if(!db_connect) {
return callback(null, 0);
}
chat_db.aggregate(
[
{"$match":{"name":"chat-msg",steamid: steamid}},
{ "$sort" : { date : -1 } },
{"$limit" : 1}
]
).toArray(function(err, list){
if (err) {
console.log("Error loading history from DB: " + err);
return callback(err);
}
var i = list.length-1;
var lasttime = Math.floor((new Date() - list[i].date)/1000);
console.log(Math.floor((new Date() - lasttime)/1000));//this works perfect
return callback(null, lasttime);
});
}
get_last_chat_time(msg.steamid, function(err, result){
console.log(result);
})