0

我刚开始使用 crossbar 和 nodejs。我有 PHP 背景。我知道 nodejs 上的 mysql 是异步的,所以我添加了一个回调,但我无法让回调从交叉开关返回一个值给 register 方法。处理这个问题的正确方法是什么?

var autobahn = require('autobahn');
var mysql = require('mysql');
var q = require('q');

var connection = new autobahn.Connection({
   url: 'ws://127.0.0.1:8080/ws',
   realm: 'realm1'}
);

connection.onopen = function (session) {

   function dologin (cb) {

        var connection = mysql.createConnection({
            host     : 'localhost',
            user     : 'xxxxx',
            password : 'xxxxx',
            database : 'xxxxx'
        });
         connection.connect();

         connection.query('SELECT * from users LIMIT 0,2', function(err, rows, fields) {
            if (!err){
               cb("Done");
            }else{
               cb('Error while performing Query. ');
            }

         });
     }
   function login (args) {
        return dologin(function(response){

           return "status: "+response;
        });
   }

   session.register('com.cms.login', login).then(
      function (reg) {
         console.log("Login registered");
      },
      function (err) {
         console.log("failed to register procedure: " + err);
      }
   );
};

connection.open();
4

0 回答 0