Javascript Node.js-无法绑定多部分
我有一个错误Javascript Node.js-无法绑定多部分,javascript,node.js,Javascript,Node.js,我有一个错误(节点:1152)未处理PromisejectionWarning:未处理的承诺拒绝(拒绝id:3):RequestError:无法绑定多部分标识符“SC1.refb”。 在控制台日志中显示所有选择,但似乎是最后一个选择并给出错误 我的代码: return Promise.all(parts.map(function(part) { console.log("SELECT sc.scstamp, st.u_posic, st.fornec, st.forneced
(节点:1152)未处理PromisejectionWarning:未处理的承诺拒绝(拒绝id:3):RequestError:无法绑定多部分标识符“SC1.refb”。
在控制台日志中显示所有选择,但似乎是最后一个选择并给出错误
我的代码:
return Promise.all(parts.map(function(part) {
console.log("SELECT sc.scstamp, st.u_posic, st.fornec, st.fornecedor, sc.ref, sc.qtt, sc.design FROM sc INNER JOIN st ON st.ref = sc.ref WHERE sc.refb = '"+kitRef+"' AND st.u_posic = '"+part.u_order+"'"+
"UNION SELECT SC2.scstamp, st.u_posic, st.fornec, st.fornecedor, SC2.ref, SC2.qtt, SC2.design FROM sc AS SC1"+
"INNER JOIN sc SC2 ON SC2.refb = SC1.ref INNER JOIN st ON st.ref = SC2.ref WHERE SC1.refb = '"+kitRef+"' AND st.u_posic = '"+part.u_order+"'");
return request.query("SELECT [sc].[scstamp], [st].[u_posic], [st].[fornec], [st].[fornecedor], [sc].[ref], [sc].[qtt], [sc].[design] FROM sc INNER JOIN st ON st.ref = sc.ref WHERE sc.refb = '"+kitRef+"' AND st.u_posic = '"+part.u_order+"'"+
"UNION SELECT [SC2].[scstamp], [st].[u_posic], [st].[fornec], [st].[fornecedor], [SC2].[ref], [SC2].[qtt], [SC2].[design] FROM sc AS SC1"+
"INNER JOIN sc SC2 ON SC2.refb = SC1.ref INNER JOIN st ON st.ref = SC2.ref WHERE SC1.refb = '"+kitRef+"' AND st.u_posic = '"+part.u_order+"'")
.then(function(articles) {
return {part:part, articles:articles};
});
}));
查询是可以的,因为如果我把它放在sql中,它会工作得很好
谢谢您的SQL中似乎有一些空格被弄乱了,但这是您遇到的最小问题。 首先,始终在每个承诺上附加拒绝处理程序,否则您的应用程序将因错误而崩溃。例如: 坏的: 好: 也很好:
f().then(function (articles) { ... }).catch(function (error) { ... });
查看以下答案,了解其重要性:
connection.query(
"SELECT * FROM player WHERE nick = '" + data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?",
[data.login, data.pass],
function (err, rows) {
// ...
}
);
良好、安全、坚固且易于维护:
connection.query(
"SELECT * FROM player WHERE nick = '" + data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?",
[data.login, data.pass],
function (err, rows) {
// ...
}
);
有关更多详细信息,请参见这些答案:
SQL中似乎有一些空格被弄乱了,但这是您遇到的最小问题。 首先,始终在每个承诺上附加拒绝处理程序,否则您的应用程序将因错误而崩溃。例如: 坏的: 好: 也很好:
f().then(function (articles) { ... }).catch(function (error) { ... });
查看以下答案,了解其重要性:
connection.query(
"SELECT * FROM player WHERE nick = '" + data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?",
[data.login, data.pass],
function (err, rows) {
// ...
}
);
良好、安全、坚固且易于维护:
connection.query(
"SELECT * FROM player WHERE nick = '" + data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?",
[data.login, data.pass],
function (err, rows) {
// ...
}
);
有关更多详细信息,请参见这些答案:
添加一个
.catch(函数(e){console.log(e)})
链接在之后。然后给出关于SC1.ref和SC1.refb的错误。有什么问题@stecb@user3242861你能发布整个堆栈跟踪吗?它是查询中的一个空格。解决了的!多谢各位@stecb@user3242861您需要认真考虑下面关于SQL注入的建议,添加A<代码> .catch(函数(e){控制台.log(e)})< /代码>链接在<代码>之后。然后<代码>在SC1.RF和SC1.ReFB上给我错误。有什么问题@stecb@user3242861你能发布整个堆栈跟踪吗?它是查询中的一个空格。解决了的!多谢各位@stecb@user3242861你需要认真考虑下面关于SQL注入的建议