Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在NPM MSSQL中将参数传递给PreparedStatement存储过程_Node.js_Angular_Npm - Fatal编程技术网

Node.js 如何在NPM MSSQL中将参数传递给PreparedStatement存储过程

Node.js 如何在NPM MSSQL中将参数传递给PreparedStatement存储过程,node.js,angular,npm,Node.js,Angular,Npm,我试图将参数传递给npm mssql中的存储过程准备语句。npm文档中有查询示例,但没有SPs示例。当我尝试调用SP时,我得到“…预期参数'@ID',但未提供”。我添加了日志记录,以查看参数是否进入函数。这是我的密码: storedproc(sp, params, raw) { if (!sp) return Promise.reject('Stored Procedure is required') if (!params) return this.simpleSP(sp)

我试图将参数传递给npm mssql中的存储过程准备语句。npm文档中有查询示例,但没有SPs示例。当我尝试调用SP时,我得到“…预期参数'@ID',但未提供”。我添加了日志记录,以查看参数是否进入函数。这是我的密码:

storedproc(sp, params, raw) {
    if (!sp) return Promise.reject('Stored Procedure is required')
    if (!params) return this.simpleSP(sp)
    console.log(params);

    return new Promise((resolve, reject) => {
        if (!params) params = {}
        let ps = new sql.PreparedStatement(this.pool)

        //add the key / values to the prepared statements from referenced params
        for (let key in params) {
            console.log(typeof params[key]);
            console.log(key);
            console.log(params[key]);
            //map type of var with SQL data type
            if (typeof params[key] == 'number') {
                ps.input(key, sql.Float)
            } else if (typeof params[key] == 'string') {
                ps.input(key, sql.VarChar(params[key].length))
            } else if (typeof params[key] == 'int') {
                ps.input(key, sql.Int)
            } else if (typeof params[key] == 'date') {
                ps.input(key, sql.Date)
            } else {
                ps.input(key, sql.VarChar)
            }
        }
            console.log(ps.parameters);
        //prepare the statement
        ps.prepare(sp, err => {
            if (err) return reject(err)

            ps.execute(params, (err, result) => {
                if (err) return reject(err)

                //return the resulting recordset
                resolve(raw ? result : result.recordset)

                //clear the prepared statement
                ps.unprepare(err => {
                    if (err) reject(err)
                })
            })
        })
    })
}
这是日志显示的内容:

console.log(params); is showing { ID: '26' }
console.log(typeof params[key]); is showing 'string'
console.log(key); is showing 'ID'
console.log(params[key]); is showing '26'
返回的错误是:
(节点:11140)未处理的PromisejectionWarning:RequestError:Procedure 或函数“Get_Data_TESTING”需要未提供的参数“@ID”

如何将参数传递给SP