2015-10-31 26 views
-1

我是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

回答

1

嘗試

var get = {"product_id": product_id}; 

您的表格沒有'id'列,它有'product_id'列。

異常1054引用未知的列異常。

+0

它的工作。 {product_id:product_id}是做什麼的? 我試圖console.log(get),它說[object,object] – user3464613

+1

{key:value}是一個JavaScript對象,它被構造爲鍵值對。查詢函數替換'?'與對象的元素 - 在這裏'得到'。這是console.log打印對象的默認行爲。嘗試使用console.log打印它(JSON.stringify(obj)) –