2016-09-13 12 views
4

表の列の最大値を持つ3データを取得し、私のテーブルには、著者、タイトル、内容、カウントで構成されており、各データは次のようになりますしますどのように私はknexと本棚を使用しています

author: 'John Doe', 
title: 'aaaaa', 
content: 'aaaaaaaa' 
count: 54, 

countの値に基づいてデータを取得する必要があり、カウント値が最も高い4つのデータを取得したいとします。私はすべてのデータを取得したい場合は

、私はこのようにやっている:

router.get('/', (req, res) => { 
    Article.forge().fetchAll().then(article => { 
     res.json(article); 
    }) 
}) 

は私がこれを達成できるように、私は、コードを追加する必要がありますどのようなforge({ count: 3 data that has the highest count value })または
のように行うことができます方法はあります?

答えて

4

は、これは私のチームは本棚を削除し、ちょうど基本的なknexを使用している理由を強調しfetchPage

Article 
    .orderBy('-count') 
    .fetchPage({ 
    pageSize: 3 
    }) 
    .forge() 

orderByを組み合わせます。関連するモデルを取得したい場合を除き、ORMレイヤーを使用しない方が簡単です。 knex同等knexコードは次のとおりです。

knex('articles') 
    .orderBy('count', 'desc') 
    .limit(3) 
やや単純であり、得られる行のプロパティに直接アクセスすることができ

、すなわちrows[0].idはなくrows[0].get('id')

+1

答えてくれてありがとう!うん、私は同じように感じ始めた。私は次のプロジェクトにknexだけを使うかもしれません。再度、感謝します。 – Dan

関連する問題