2013-03-19 37 views
1

我需要在當前模塊中使用其他模塊功能的結果。我該如何做到這一點。在node.js中如何獲取當前模塊中其他模塊函數的結果?

module1.js

  var module2=require('./lib/module2'); 
     module2.getValue(); 

現在我想的是 '真' 在的getValue method.How返回我能來到這裏。

在下面的代碼其他語言將工作

var result=module2.getValue(); 

但在node.js中,我們必須使用回調方法來獲取value.How我能做到這一點。

module2.js

exports.getValue=function(){ 

    console.log('getValue method called.'); 
    return true; 

}; 

最後我改變了我的模塊1的代碼還,但我不得到那個結果作爲true.Below是我的更新模塊1碼

 var module2=require('./lib/module2'); 
    module2.getValue(); 

下面是我確切的代碼

server.js

 var express = require('express') 
    , http = require('http'); 

    var app = express(); 

    app.configure(function(){ 
    app.use(express.static(__dirname + '/public')); 
}); 

    var server = http.createServer(app); 

    var io = require('socket.io').listen(server); 

    server.listen(8000); 

    var cradle=require('cradle'); 

    new(cradle.Connection)('https://mydomain.iriscouch.com/', 5984, { 
       cache: true, 
       raw: false 
      }); 


      cradle.setup({ 
       host: 'mydomain.iriscouch.com', 
       cache: true, 
       raw: false 
       }); 


       var c = new(cradle.Connection); 
       exports.connObj=c; 

       var notifications=require('./lib/Notifications'); 
       var notificationId="89b92aa8256cad446913118601000feb"; 
       console.log(notifications.getNotificatiosById(notificationId)); 

Notifications.js

 var appModule=require('../server'); 
     var connectionObj=appModule.connObj; 
     var db = connectionObj.database('notifications'); 


     exports.getNotificatiosById=function(notificationId){ 

     db.get(notificationId, function (err, doc) { 
    console.log(doc);//im getting output for this line while running server.js file 
     return true; 
    }); 

    }; 
+0

'var result = module2.getValue();'只要你的方法是同步的就好了。 – generalhenry 2013-03-19 09:35:06

+0

@generalhenry var result = module2.getValue(); console.log(result); //我試過這段代碼,但總是顯示結果爲undefined。 – sachin 2013-03-19 09:39:32

+0

奇怪,試着在module1'console.dir(module2);'和'console.log(module2.getValue.toString());'看看你得到了什麼。 – generalhenry 2013-03-19 09:43:20

回答

0

所以你有這樣的方法:

exports.getNotificatiosById = function (notificationId) { 

    db.get(notificationId, function (err, doc) { 
    console.log(doc); //im getting output for this line while running server.js file 
    return true; 
    }); 

}; 

有和內回調函數。在這種情況下,getNotificatiosById不可能從db.get內返回值。您應該閱讀this

我不知道你使用了哪個數據庫系統,但在API中可能有一個同步版本,即db.getSync。然後,我們可以做這樣的事情:

exports.getNotificatiosById = function (notificationId) { 

    return db.getSync(notificationId); 

}; 

但基本上在我們的NodeJS幾乎總是使用(並希望使用),因爲執行腳本的無阻塞的方式回調函數。不管你對這個東西的知識如何,我推薦Introduction to Node.js視頻,其中節點的創建者解釋很多。

+0

Swiecki好的謝謝你的post.i瞭解,現在.. – sachin 2013-03-22 06:37:52

相關問題