Javascript 如何在strongloop中调用存储过程

Javascript 如何在strongloop中调用存储过程,javascript,angularjs,node.js,loopbackjs,strongloop,Javascript,Angularjs,Node.js,Loopbackjs,Strongloop,我使用的是MySQL和strongloop,我有一个存储过程来交换数据 swap_XYZ('<old_abc>', '<new_new>') swap_XYZ(“”,“”) 我在文档中找不到任何调用存储过程的示例。如何调用此存储过程?提前谢谢 请参阅此链接。 dataSource.connector.execute(sql、params、cb);或者dataSource.connector.query(sql、params、cb) 我最终成功地调用了存储过程 首先,

我使用的是
MySQL
strongloop
,我有一个存储过程来交换数据

swap_XYZ('<old_abc>', '<new_new>')
swap_XYZ(“”,“”)
我在文档中找不到任何调用存储过程的示例。如何调用此存储过程?提前谢谢

请参阅此链接。 dataSource.connector.execute(sql、params、cb);或者dataSource.connector.query(sql、params、cb)


我最终成功地调用了存储过程

首先,我们需要定义
app
,就像Riaz是kather一样
var-app=require('../../server/server')

但是
app.dataSources.MySQL
app.dataSources.dsMySQL
都不适合我。我的环回版本是
loopback@3.17.1
我的正确属性名是
app.dataSources.mysql

然后确保您的数据库用户帐户具有调用存储过程的权限:

在使用函数和过程时授予函数/过程的特权: 程序中,Grant语句可用于授予用户权限 在MySQL中执行函数和过程授权执行 特权:Execute特权赋予执行函数的能力 或程序

语法:

将[PROCEDURE | FUNCTION]对象上的EXECUTE授予用户


引用自:

使用node.js调用PL/SQL存储过程

假设过程的名称为
getCountryName
,它接受一个输入参数和一个输出参数

var executeProcedure = function () {
        var procedureName = "CALL GETCOUNTRYNAME(:inputVal,:outVal)";
        var oracledb = require('oracledb');
        oracledb.maxRows = 1;
        // oracledb.fetchAsString = [oracledb.CLOB];
        oracledb.getConnection(
            {
                user: 'user',
                password: 'password',
                connectString: "connectString"
            },
            function (err, connection) {
                if (err) {
                    console.error(err);

                    return;
                }
                connection.execute(
                    procedureName,
                    {
                        outVal: {
                            type: oracledb.STRING,
                            dir: oracledb.BIND_OUT
                        },
                        inputVal: {
                            type: oracledb.STRING,
                            dir: oracledb.BIND_IN,
                            val: 'IN'
                        }
                    },

                    function (err, result) {
                        if (err) {
                            console.error(err);

                            return;
                        }
                       console(result)
                    });
            });
};
欲知详情


检查此项,希望它能帮助您我正在尝试此项,但出现错误“无法读取未定义的属性“connector”
module.exports = function (ABCModel) {
 var ds = app.dataSources.dsMySQL;

  ABCModel.swap = function (old_abc, new_abc, cb) {

    var sql = "CALL `swap_XYZ`('" + old_abc + "','" + new_abc + "');";

    ds.connector.query(sql, function (err, data) {
      if (err) {
        console.log("Error:", err);
      }
      cb(null, data);
      console.log("data:", data);
    });
  }

  ABCModel.remoteMethod(
    'swap',
    {
      accepts: [
        {arg: 'old_abc', type: 'string'},
        {arg: 'new_abc', type: 'string'}
      ],
      returns: {arg: 'result', type: 'object'},
      http: {path: '/swap', verb: 'post'}
    }
  );
};
var executeProcedure = function () {
        var procedureName = "CALL GETCOUNTRYNAME(:inputVal,:outVal)";
        var oracledb = require('oracledb');
        oracledb.maxRows = 1;
        // oracledb.fetchAsString = [oracledb.CLOB];
        oracledb.getConnection(
            {
                user: 'user',
                password: 'password',
                connectString: "connectString"
            },
            function (err, connection) {
                if (err) {
                    console.error(err);

                    return;
                }
                connection.execute(
                    procedureName,
                    {
                        outVal: {
                            type: oracledb.STRING,
                            dir: oracledb.BIND_OUT
                        },
                        inputVal: {
                            type: oracledb.STRING,
                            dir: oracledb.BIND_IN,
                            val: 'IN'
                        }
                    },

                    function (err, result) {
                        if (err) {
                            console.error(err);

                            return;
                        }
                       console(result)
                    });
            });
};