我正在编码一个实施条纹API的网站。 我正在使用NodeJS和mysql。 我需要创建2个表保存多个信息。
我在一个表中有一个ID,在第二个表中有一个authID。 我试图让链接2代表与那些ID,这样我就可以轻松地将它们链接在一起。 因此,我创建了保存在第一表和把它放入2的ID的变量,但我不能设法保存它。
这是我的代码:
var sqlstripe = "SELECT id FROM authentification WHERE customerID = '" + customer.id +"'";
console.log("getting ID from auth to put it in stripeID");
var rowIDinDB = DB.query(sqlstripe, function (err, result) {
if (err) throw err;
console.log(result);
});
var sqlInsertstrip = "INSERT INTO stripeid (authID, customerID, subscriptionID, amount, date) VALUES ?";
var valuesstripe = [
[rowIDinDB, customer.id, subscription.id, subscription.amount, datenow]
];
console.log('sending data to the DB for StripeID table');
DB.query(sqlInsertstrip, [valuesstripe], function (err, result) {
if (err) throw err;
console.log(result);
});
我将请求保存在“ sqlstripe”中,但是当我将其发布到rowIDinDB下时,我得到: 错误:ER_TRUNCATED_WRONG_VALUE_FOR_FIELD:不正确的整数值:第1行“ authID”列的“ [object Object]”
身份验证ID是一个无符号的smallint,ID也是如此。
感谢您的帮助,如果你知道如何解决。
答案 0 :(得分:0)
注释很难添加代码,因此请在此处回复。 由于您没有像您提到的那样使用Promise,因此需要将代码放入回调中。
免责声明,由于尚未确定您使用的是哪个软件包,我尚未对其进行测试。但是想法是rowIDinDB
不是您要查找的结果,而是在结果回调中。
var sqlstripe =
"SELECT id FROM authentification WHERE customerID = '" + customer.id + "'";
console.log("getting ID from auth to put it in stripeID");
DB.query(sqlstripe, function(err, result) {
if (err) throw err;
console.log(result);
let rowIDinDB = result.rows; // ????? Attention, depends on your library, to USE the RIGHT properties
var sqlInsertstrip =
"INSERT INTO stripeid (authID, customerID, subscriptionID, amount, date) VALUES ?";
var valuesstripe = [
[rowIDinDB, customer.id, subscription.id, subscription.amount, datenow]
];
console.log("sending data to the DB for StripeID table");
DB.query(sqlInsertstrip, [valuesstripe], function(err, result) {
if (err) throw err;
console.log(result);
});
});