得到一个mysql请求的答案

时间:2019-01-31 19:55:56

标签: mysql sql node.js stripe-payments

我正在编码一个实施条纹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也是如此。

感谢您的帮助,如果你知道如何解决。

1 个答案:

答案 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);
  });
});