node.js 操作mongodb 为什么没返回?

阚雷--闞靁 2014-06-03 06:23:07
我定义了一个模块,代码如下:

var mongoUtil = function() {

};

mongoUtil.prototype.getWorkId=function(username){
var str='{"username":"'+username+'"}';
console.log('str:'+str);
var query = JSON.parse(str);
var mycollection = db.collection('user');
var rst='';
​mycollection.find(query,function(err ,cursor){
​ ​if(cursor!=null) {
​ ​ ​str = JSON.stringify(cursor);
​ ​ ​console.log('doc:'+str);
​ ​ ​var doc=cursor[0];
​ ​ ​if(doc!=null){
​ ​ ​ ​rst=doc.WorkId; ​ ​
​ ​ ​ ​console.log('my WorkId:'+doc.WorkId);
​ ​ ​}
​ ​}
​ ​db.close();
​}) ;

return rst;

};


然后在主程序中调用它:

var mongoUtil = require('./mongoUtil');

http.createServer(function(req, res) {
var mongUtil=new mongoUtil();
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<h1>Node.js</h1>');
try {
​ ​var myId=mongUtil.getBaeId(params.name,function(data){ ​ ​ ​
res.write('<h1>get return value:'+myId+'</h1>');
} catch (e) {
console.log('不能被正常解析的数据');
}
res.end('<p>Hello World</p>');
}).listen(port);


打开网页,发现根本得不到返回值,myId为空。但是console.log就显示my WorkId:123。 请问是什么原因呢?
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seven小七 2014-06-04
  • 打赏
  • 举报
回复
2L正解 nodejs里不建议使用return 返回值 exports才是作为模块对象返回
张运领 2014-06-03
  • 打赏
  • 举报
回复
你是不是应该在第一个文件中的最后,添加上一句话:module.exports = mongoUtil; 因为当你require加载一个模块时,会把exports对象作为返回值的,你没有定义这个,就等于返回了一个空的exports对象。 没有什么用的。
peak1951 2014-06-03
  • 打赏
  • 举报
回复
飘过,帮楼主顶一下,攒攒人气

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧