function findUrl(url, collection) {
collection.find({
url: url
}).toArray(function (err, docs) {
if (docs.length > 0) {
result = {
original_url: docs[0].url,
short_url: docs[0].shorterUrlNum
};
console.log(result); //<---从数据库中得出数据,改变了result的值
}
});
console.log(result);//<---这里显示未赋值之前的,值没有改变
return result;
}
这里我猜应该是异步惹的祸,但是怎么能让result跟着被改变?
就是异步惹的祸呢,传callback到findUrl里面吧,if里面取得result后callback(result),感觉node里面全是异步的处理,基本上都是callback呢。可以用async管理,至少代码可以清楚点。