2013-01-22 33 views
0

我正在使用nodejs應用程序。
文件夾結構從nodejs中的模塊返回/獲取對象mongodb

app 
app.js 
package.json 
../model/schema.js 
../controller/controller.js 
../views 


所有的邏輯是controller.js而app.js執行從控制器路由本身....
我想知道如何獲得/返回數據(對象)。 js到app.js.
我使用'返回'從控制器發送mongodb文件到應用程序,但它的未定義。 app.js..i的

赫雷什代碼已經移除不必要的代碼

var express = require('express'), 
    app = express.createServer(express.logger()), 
    io = require('socket.io').listen(app), 
    routes = require('./routes'); 
    var controller=require('./controller/controller'); 
    var model=require('./model/schema'); 

    app.get("/", function(req, res) { 
    res.render("chatroom.html"); 
    }); 

    io.sockets.on('connection', function (socket) { 
     socket.on('login',function(user) 
     { 
      var onliner=controller.loginUser(user); 
      console.log("Onlinersss: ",onliner); 
     }); 

     socket.on('registerUser',function(user){ 
      controller.registerUser(user); 
     }); 
    }); 



赫雷什controller.js代碼:

var model=require('../model/schema'); 
    exports.loginUser=function(user) 
    { 

     model.registerUser.findOne({uname:user.uname,pass:user.pass},function(err,doc){ 
     if(!err){ 
      console.log("Here loggedin: ",doc); 
      return doc;    
     } 
     else 
      console.log("Invalid username or password"); 
     }); 
    }; 
+0

繼承人的問題的詳細解釋和代碼 http://stackoverflow.com/questions/10928471/nodejs-pass-value-from-one-module-to-another-module –

回答

0

我只是推了一個項目,GitHub使用幾乎相同的庫和RethinkDB作爲數據庫(非常類似於MongoDB的)。基本上,您需要將callbacks傳遞給您的控制器,並使用從數據庫檢索到的數據調用它們。查看鏈接項目中的app.js和lib/db.js。

+0

是回調用於場景...謝謝。 –

0

的JavaScript(和因此的node.js)是異步的。當你'返回doc'時,在function(err, doc)處定義的匿名函數被返回...而不是你試圖從中獲取數據的函數loginUser。

loginUser立即返回,並返回undefined(因爲您沒有指定其他任何內容)。爲了明白我的意思,把'返回true'。作爲loginUser的最後一行,你會注意到你的值是'true'。

但是,您不想返回一個值。你想用一個值回調。這是超出了計算器答覆的範圍,所以這裏是一個很好的資源:

http://bjouhier.wordpress.com/2011/01/09/asynchronous-javascript-the-tale-of-harry/

+0

是啊..我有你它返回的函數(err,doc),但我沒有得到這個harry的教程。 –

+0

請用其他方式建議..? –

+0

我剛剛在這裏得到了我的答案:http://stackoverflow.com/questions/10928471/nodejs-pass-value-from-one-module-to-another-module –