首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用express.js返回未定义的MySQL存储过程

使用express.js返回未定义的MySQL存储过程
EN

Stack Overflow用户
提问于 2018-07-16 08:55:35
回答 2查看 491关注 0票数 0

我在MYSQL中有一个存储过程getUsers,它接受一个整数并返回一个包含用户数据的用户表。当我在phpmyadmin中使用'name‘字段运行存储过程时,它返回1行,但是当我从Node.js调用它时,行字段返回"undefined“。我觉得我一定是漏掉了什么,因为我用Node.js做的其他表操作都是以同样的方式工作的,但是当我尝试调用这个存储过程时,它不是这样的。

代码语言:javascript
复制
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var bcrypt = require('bcrypt');
//constants
const tableName = 'user';

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'users',
    charset : 'utf8mb4'
});

//function to insert to or retrieve data from the database
router.post('/', function(req, res, next) {
        let userID = req.body.userID;
        connection.query(
            "CALL `getUsers`(?)",
                [userID],
                function(err, row, field) {
                if (err) {
                    res.send({ 'success': false, 'message': 'Could not connect. ' + err});
                }
                if ( row.length > 0 ) {
                    console.log('name: ' + row[0].name);
                    res.send({ 'success': true, 'users': row });
                } else {
                    res.send({ 'success': false, 'message': 'No users found.' });
                }
        }); 
    }
});

控制台日志返回'name: undefined',但当我在phpmyadmin中运行该过程时,它会返回包含正确的'name‘字段的行。

EN

回答 2

Stack Overflow用户

发布于 2018-07-16 09:21:48

语法应为:

connection.query(`CALL getUsers(?)`, [userID], (err, row, field) => {})

注意反引号和双引号的使用方式。

票数 0
EN

Stack Overflow用户

发布于 2018-07-17 10:47:56

只想让你们知道,我通过将row.name改为row.name修复了这个问题,结果表明,存储过程与常规查询不同,因为它们返回一个数组,而不仅仅是一个数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51353383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档