2014-10-16 80 views
1

我正在使用節點JS的書架插件來執行mysql查詢。但我不知道如何執行LIMIT查詢。這樣如何選擇LIMIT mysql與書架nodeJS

SELECT * from tableName LIMIT 2; 

我的連接書架:

Bookshelf.mysqlAuth = Bookshelf.initialize({ 
    client: client, 
    connection: { 
     host  : host, 
     user  : user, 
     password : password, 
     database : database 
    } 

和數據的方法:

var qb = data.Img.query(); 
    qb.where('img_md5', '=', imgMD5save).update({img_size: fileLength, img_local_url: folder, img_type: fileType, img_downloaded: 1}).then(function(){}); 

我:

bookshelf.Img = Bookshelf.Model.extend({ 
    tableName: 'image' 
    }); 

您可以要求連接時使用此已經嘗試過

qb.limit(5).then(function(){}); 

,但它發射的錯誤

Possibly unhandled TypeError: Cannot call method 'apply' of undefined

請建議的任何解決方案。 謝謝!

回答

1

在查看您試圖在qb模型上執行的操作之後,您試圖運行帶有LIMIT子句的UPDATE查詢。

  • LIMIT可以與UPDATE但僅與row count使用。
  • 參考這個StackOverflow question
  • 而不是使用您的更新一個LIMIT條款,我會建議加強你WHERE子句的UPDATE查詢。

如果您的目的只是爲了運行一個SELECT查詢與LIMIT條款,請看看代碼片段我提供以下:

var qb = data.Img.query(); 
    qb 
    .select('*') 
    .from('image') 
    .where('img_md5', '=', imgMD5save) 
    .limit(2) 
    .then(function(result){ 
     return result; 
    }) 
    .catch(function(error) { 
     throw new error; 
    }); 
1

按照documention,你可以把它寫這樣:

bookshelf.Img.query(function(qb) { 
    qb.offset(30).limit(10); 
}) 
.fetchAll() 
.then(...); 

這將返回從第30張圖像開始的10張圖像的集合。