我是node.js的新手,試圖將它與mysql一起使用來從數據庫發出一些簡單的請求。 我想要輸入一個網址http://localhost:8080/api/products/1234567時發出一個請求,它會返回product_id = 1234567帶來的產品數據。 問題是我收到一個 {「status」: {「code」: 「ER_BAD_FIELD_ERROR」, 「errno」:1054, 「sqlState」:「42S22」, 「index」:0}} 每當我運行這個錯誤。但是,當我運行http://localhost:8080/api/products時,它將返回產品表中的3列數據。node.js mysql查詢product_id響應「代碼」:「ER_BAD_FIELD_ERROR」「errno」:1054
這個錯誤是怎麼發生的?我不明白爲什麼/產品工程和/產品/ 1234567不起作用
這裏是我的代碼:
app.js
var express = require('express');
var bodyParser = require('body-parser');
var dbProducts = require('./dbProducts.js');
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
var port = process.env.PORT || 8080; // set our port
var router = express.Router();
router.use(function (req, res, next) {
console.log('Incoming request..');
next();
});
// test route to make sure everything is working (accessed at GET http://localhost:8080/api)
router.get('/', function (req, res) {
res.json({message: 'Welcome to the store api!'});
});
router.route('/products')
// get all the products (accessed at GET http://localhost:8080/api/products)
.get(function (req, res) {
dbProducts.getProducts(function (err, data) {
if (data) {
res.json({
status: '200',
items: data
});
} else {
res.json(404, {status: err});
}
});
})
db.js
var mysql = require('mysql');
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
port: 3306,
password: 'password',
database: 'test'
});
module.exports.pool = pool;
dbProducts。 js
var db = require('./db.js');
var getProduct = function getProduct(product_id, callback) {
var get = {id: product_id};
db.pool.getConnection(function (err, connection) {
// Use the connection
connection.query('SELECT * FROM PRODUCTS WHERE ? ', get, function (err, results) {
if (!err) {
if (results[0] != null) {
callback(null, results);
} else {
callback("Product not found.", null);
}
} else {
callback(err, null);
}
//release
connection.release();
});
});
}
var getProducts = function getProducts(callback) {
db.pool.getConnection(function (err, connection) {
// Use the connection
connection.query('SELECT * FROM PRODUCTS', function(err, results){
if (!err) {
if (results != null) {
callback(null, results);
} else {
callback(err, null);
}
} else {
callback(err, null);
}
//release
connection.release();
});
});
}
module.exports.getProduct = getProduct;
module.exports.getProducts = getProducts;
內部產品表 「項目」: { 「PRODUCT_ID」:1234567, 「產品」: 「產品1」, 「價格」:99.99 }, { 「PRODUCT_ID」:5555555, 「產品「: 「產品2」, 「價格」:4.99 }, { 「PRODUCT_ID」:8888888, 「產品」: 「產品3」, 「價格」:19.99
它的工作。 {product_id:product_id}是做什麼的? 我試圖console.log(get),它說[object,object] – user3464613
{key:value}是一個JavaScript對象,它被構造爲鍵值對。查詢函數替換'?'與對象的元素 - 在這裏'得到'。這是console.log打印對象的默認行爲。嘗試使用console.log打印它(JSON.stringify(obj)) –