【问题标题】:SQLite inserts variable values as Null in Javascript Node.JSSQLite 在 Javascript Node.JS 中将变量值插入为 Null
【发布时间】:2020-04-23 02:21:26
【问题描述】:

我一直在寻找和尝试很多,但无法弄清楚。我想将从 API 调用收到的 8 个变量插入到 SQLite 表中。一切都正确执行,但是当我查询表时,它显示null 的所有值。

我收到例如以下req 对象:

REQ object:  { id: '22',
type: 'Buy',
userId: '2000',
userName: 'Daniela',
symbol: 'SPY',
shares: '15000',
price: '99.99',
timestamp: '2014-10-10 14:39:25' }

然后我分配新变量:

var id = req.query.id;
var tradeType = req.query.tradeType;
var userId = req.query.userId;
var userName = req.query.userName;
var symbol = req.query.symbol;
var shares = req.query.shares;
var price = req.query.price;
var timestamp = req.query.timestamp;

然后我把它放在一个sql 字符串中:

var sql =
  "INSERT INTO trades (id, tradeType, userId, userName, symbol, shares, price, timestamp) VALUES (?,?,?,?,?,?,?,?)",
id,
tradeType,
userId,
userName,
symbol,
shares,
price,
timestamp;

最后,我把它写到桌子上:

var params = [];
db.all(sql, params, (err, rows) => {
if (err) {
  console.log("Error when adding trade: ", err.message);
}
console.log("inserted ", rows);
});

当我用硬编码的字符串或数字替换变量时,一切正常,如下所示:

var sql =
  "INSERT INTO trades (id, tradeType, userId, userName, symbol, shares, price, timestamp) VALUES (2,'Sell',100,'TestName','AAPL',100,99.99,'2014-10-12 13:20:30')"

我需要 sql 字符串是动态的,因为数据来自 API 调用。我读到这可能与 JavaScript 通过引用而不是按值分配对象引用这一事实有关。我尝试了 String(variable) 一切,但也没有用。

【问题讨论】:

    标签: javascript node.js sqlite express


    【解决方案1】:

    您似乎没有在任何地方填充 params[] 数组,因此您应该尝试这样做:

    var sql = "INSERT INTO trades (id, tradeType, userId, userName, symbol, shares, price, timestamp) VALUES (?,?,?,?,?,?,?,?)";
    var params = [id, tradeType, userId, userName, symbol, shares, price, timestamp];
    db.all(sql, params, (err, rows) => {
        if (err) {
            console.log("Error when adding trade: ", err.message);
        }
        console.log("inserted ", rows);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多