Javascript 如何在NodeJSRESTAPI中从mysql获取特定数据

Javascript 如何在NodeJSRESTAPI中从mysql获取特定数据,javascript,node.js,rest,api,Javascript,Node.js,Rest,Api,这是我的数据库: 这是我的密码 //由jenis_kelamin阅读 router.get('/:table/jk/:jenis_kelamin',函数(req,res){ sequelize.query(“显示来自`+TABLE\u PREFIX+req.params.TABLE+“`WHERE Key\u name='PRIMARY'”,{type:sequelize.QueryTypes.SELECT}的键) .然后(功能(键){ var jenis_kelamin=req.param

这是我的数据库:

这是我的密码

//由jenis_kelamin阅读
router.get('/:table/jk/:jenis_kelamin',函数(req,res){
sequelize.query(“显示来自`+TABLE\u PREFIX+req.params.TABLE+“`WHERE Key\u name='PRIMARY'”,{type:sequelize.QueryTypes.SELECT}的键)
.然后(功能(键){
var jenis_kelamin=req.params.jenis_kelamin;
sequelize.query(“选择*自”+“+TABLE_PREFIX+req.params.TABLE+”`WHERE jenis_kelamin=`+jenis_kelamin+”`,{type:sequelize.QueryTypes.SELECT})
.then(函数(行){
如果(!rows.length){
物质状态(404);
res.json({
“成功”:0,
“数据”:“未找到行”
});
}
物质状态(200);
res.json({
"成功":一,,
“数据”:行
});
})
.catch(函数(err){
物质状态(404);
res.send({
“成功”:0,
“消息”:err.message
});
});
})
.catch(函数(err){
物质状态(404);
res.send({
“成功”:0,
“消息”:err.message
});
});
});试试这个

//Read by jenis_kelamin
router.get('/:table/jk/:jenis_kelamin', function(req, res) {
    sequelize.query("SHOW KEYS FROM '"+TABLE_PREFIX+req.params.table+"' WHERE Key_name = 'PRIMARY'", { type: sequelize.QueryTypes.SELECT})
    .then(function(keys) {
        var jenis_kelamin =req.params.jenis_kelamin;
        sequelize.query("SELECT * FROM '"+TABLE_PREFIX+req.params.table+"' WHERE jenis_kelamin = '"+jenis_kelamin+"' ", { type: sequelize.QueryTypes.SELECT})
        .then(function(rows) {
            if(!rows.length) {
                res.status(404);
                res.json({
                    "success" : 0,
                    "data" : "No rows found"
                });
            }
            res.status(200);
            res.json({
                "success" : 1,
                "data" : rows
            });
        })
        .catch( function(err) {
            res.status(404);
            res.send({
                "success" : 0,
                "message" : err.message
            });
        });
    })
    .catch( function(err) {
        res.status(404);
        res.send({
            "success" : 0,
            "message" : err.message
        });
    });
});
这应该也行

//Read by jenis_kelamin
router.get('/:table/jk/:jenis_kelamin', function(req, res) {
    sequelize.query("SHOW KEYS FROM '"+TABLE_PREFIX+req.params.table+"' WHERE Key_name = 'PRIMARY'", { type: sequelize.QueryTypes.SELECT})
    .then(function(keys) {
        var jenis_kelamin =req.params.jenis_kelamin;
        return sequelize.query("SELECT * FROM '"+TABLE_PREFIX+req.params.table+"' WHERE jenis_kelamin = '"+jenis_kelamin+"' ", { type: sequelize.QueryTypes.SELECT})
    })
    .then(function(rows) {
        if(!rows.length) {
            res.status(404);
            res.json({
                "success" : 0,
                "data" : "No rows found"
            });
        }
        res.status(200);
        res.json({
            "success" : 1,
            "data" : rows
        });
    })
    .catch( function(err) {
        res.status(404);
        res.send({
            "success" : 0,
            "message" : err.message
        });
    });
});
最后

router.get('/:table/jk/:jenis_kelamin', function(req, res) {

    const myTableName = sanitizeTableName(req.params.table) 
    const myFieldValue = santizeValue(req.params.jenis_kelamin)

    sequelize.query("SHOW KEYS FROM '"+ TABLE_PREFIX + myTableName +"' WHERE Key_name = 'PRIMARY'", { type: sequelize.QueryTypes.SELECT})
    .then(function(keys) {
        var jenis_kelamin =req.params.jenis_kelamin;
        return sequelize.query("SELECT * FROM '"+TABLE_PREFIX+myTableName+"' WHERE jenis_kelamin = '"+myFieldValue+"' ", { type: sequelize.QueryTypes.SELECT})
    })
    .then(function(rows) {
        if(!rows.length) {
            res.status(404);
            res.json({
                "success" : 0,
                "data" : "No rows found"
            });
        }
        res.status(200);
        res.json({
            "success" : 1,
            "data" : rows
        });
    })
    .catch( function(err) {
        res.status(404);
        res.send({
            "success" : 0,
            "message" : err.message
        });
    });
});

其中,清理功能确保来自请求的输入不会使您受到注入攻击或任何其他令人讨厌的意外事件。

尝试打印完整的查询。我认为您正在传递没有字符串引号的值,而且存在大量嵌套和缩进。虽然这不可能是sql问题的根源,但我认为这并不是所有必要的。我认为你可以在第二个sequelize语句中“return”,并使后面的“thens”与外部语句保持一致。你能试着对查询进行编码,并确保代码在一般情况下正常工作吗。然后一次将参数放入一个?我认为你以一种不正确的方式组合了不同类型的引号,“和”在javascript生态系统中基本上是可互换的(例如,在JSON中不是),但是“是一个不同的野兽”,谢谢大家。我对nodejs非常陌生,仍然有点困惑。@IqbalKurniaone我很高兴它起作用,请接受答案