我嘗試使用以下查詢將一些測驗資料發布到 MYsql 資料庫中:
Asset.create = (newAsset, result) => {
sql.query("INSERT INTO `assets` VALUES (?, ?, ?, ?, ?)", newAsset, (err, res) => {
if (err) {
console.log("error", err);
result(err, null);
return;
}
console.log("Created new asset : ", { id: res.insertId, ...newAsset});
result(null, {id: res.insertId, ...newAsset});
});
在郵遞員中使用以下 Json 輸入:
{
"Id" : 6,
"AccountID" : "6",
"AssetID" : "6",
"AssetSymbol" : "6",
"Amount" : "60"
}
但是我收到以下錯誤:
sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?, ?)' at line 1",
sql: "INSERT INTO `assets` VALUES (`id` = 6, `accountid` = '6', `assetid` = '6', `assetsymbol` = '6', `amount` = '60', ?, ?, ?, ?)"
我的資產表的 MySQL 模型如下:
Id: INT (Not autoincrementing)
AccountID: VARCHAR(45)
AssetID: VARCHAR(45)
AssetSymbol: VARCHAR(45)
Amount: VARCHAR(45)
我知道它對 MySQL 資料庫來說是一個糟糕的設計。目前它只是一個測驗資料庫,直到我掌握了在 express 中使用 MySql 的竅門,并且稍后會創建一個新的合適的資料庫。任何關于我做錯了什么的建議將不勝感激。
uj5u.com熱心網友回復:
普通node-mysql庫不支持使用這樣的物件。您應該將物件轉換為陣列:
Asset.create = (newAsset, result) => {
sql.query("INSERT INTO `assets` VALUES (?, ?, ?, ?, ?)", Object.values(newAsset), (err, res) => {
if (err) {
console.log("error", err);
result(err, null);
return;
}
console.log("Created new asset : ", {
id: res.insertId,
...newAsset
});
result(null, {
id: res.insertId,
...newAsset
});
});
}
有許多軟體包可以添加命名占位符,您可以通過 Google 找到它們。然后你就可以寫:
Asset.create = (newAsset, result) => {
sql.query("INSERT INTO `assets` VALUES (:Id, :AccountID, :AssetID, :AssetSymbol, :Amount)", newAsset, (err, res) => {
if (err) {
console.log("error", err);
result(err, null);
return;
}
console.log("Created new asset : ", {
id: res.insertId,
...newAsset
});
result(null, {
id: res.insertId,
...newAsset
});
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/377350.html
