如何从JS函数返回一个值并将其发送到Node js中的另一个JS脚本?

时间:2017-02-01 06:52:08

标签: javascript node.js

我试图从节点js中的js函数获取返回值,并在我的服务器文件中的post方法中返回值。但出于某种原因,我一直没有定义。我可能做错了什么?我的目标是将记录变量返回到我的server.js文件 这是我到目前为止所尝试的: -

sqlconfig.js

var sql = require('mssql');
var config = {
  user: 'realm',
  password: 'friend',
  server: '123.45.67.89\\SQL2014',
  database: 'ArtCaffee'
};

module.exports = {
  sqlconnecttodb: function() {
    sql.connect(config, function(err) {
      if (err) console.log("message is for" + err);
    });
  },

  updateMember: function(Country, BankName, Password, PublicIP, UserID) {
    sql.connect(config, function(err) {
      if (err) console.log("message is for" + err);
      new sql.Request()
        .input('Country', sql.VarChar(50), Country)
        .input('BankName', sql.VarChar(50), BankName)
        .input('Password', sql.VarChar(50), Password)
        .input('PublicIP', sql.VarChar(50), PublicIP)
        .input('UserID', sql.VarChar(50), UserID)
        .execute('p_LoginUser').then(function(result) {
          var records = result[0];
          return records;
        }).catch(function(err) {
          console.dir(err);
        });
    });
  }
};

Server.js

var cnn = require('./sqlconfig.js');
var express = require('express');
var app = express();
const bodyParser = require('body-parser');

app.set('view engine', 'ejs');
app.use(express.static('public'));


app.use(bodyParser.urlencoded({
  extended: true
}));



app.get('/', function(req, res) {
  res.render('pages/index.ejs');
});

app.post('/', function(req, res) {
  console.log({
    username: req.body.uname
  });
  console.log({
    password: req.body.upass
  });

  var r = cnn.updateMember("Kenya", "Artcaffe Nairobi", "admin1234", "127.0.0.1", "admin2");
  console.log(r); // The value of r is still undefined
});

1 个答案:

答案 0 :(得分:0)

修改updateMember功能:

  updateMember: function(Country, BankName, Password, PublicIP, UserID, callback) {
    sql.connect(config, function(err) {
      if (err) console.log("message is for" + err);
      new sql.Request()
        .input('Country', sql.VarChar(50), Country)
        .input('BankName', sql.VarChar(50), BankName)
        .input('Password', sql.VarChar(50), Password)
        .input('PublicIP', sql.VarChar(50), PublicIP)
        .input('UserID', sql.VarChar(50), UserID)
        .execute('p_LoginUser').then(function(result) {
          var records = result[0];
          // return records;
          callback.call(this, null, records); // send back result
        }).catch(function(err) {
          console.dir(err);
          callback.call(this, err);  // send back error
        });
    });
  }

然后,在server.js中,您可以调用此函数:

cnn.updateMember("Kenya", "Artcaffe Nairobi", "admin1234", "127.0.0.1", "admin2", function (err, result) {
    // process result here
});