1

現在のモジュールで他のモジュール関数の結果が必要です。これを行うにはどうすればよいですか。

module1.js

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

ここで、getValueメソッドで「true」を返したいのですが、どうすればここに到達できますか。

以下の他の言語では、コードは機能します

var result=module2.getValue();

しかし、node.jsでは、その値を取得するためにコールバックメソッドを使用する必要があります。どうすればそれを行うことができますか。

module2.js

exports.getValue=function(){

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

};

最後に、module1コードも変更しましたが、その結果がtrueとして表示されません。以下は、更新されたmodule1コードです。

     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;
  });

     };
4

1 に答える 1

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あなたはおそらくこれを読むべきです。

使用しているデータベースシステムはわかりませんが、APIには同期バージョンがありますdb.getSync。次に、次のようなことを行うことができます。

exports.getNotificatiosById = function (notificationId) {

  return db.getSync(notificationId);

};

しかし、基本的にNodeJSでは、スクリプトをブロックしない方法で実行するため、ほとんどの場合、コールバック関数を使用します(そして使用したいと考えています)。このような知識に関係なく、ノードの作成者が多くのことを説明しているNode.jsの紹介ビデオをお勧めします。

于 2013-03-21T19:50:06.737 に答える