2016-11-29 5 views
1

現在、クライアント側では、データベースからレコードラベルの配列を受け取ります。以下のコードは、すべてのレコードラベルを呼び出すためにSequelizeで使用されるクエリです。Sequallize、findall query、どのように特定の順序で配列を返すのですか?

私は名前(文字列)の順で配列を受け取るんが、

配列は名前が首都であるのであれば、大文字と小文字が区別されている配列の先頭になります。現在

:私はそれを出力するものの例に与える

B

C

D

B

C

D

が、私はそれがこの

B

B

Cのように返すために取得しようとしている

C

D

D

他のすべてが失敗した場合、私はクライアント側でいくつかのロジックを作成しますが、任意の提案をいただければ幸いです。

router.get('/', function (req, res) { 
    RecordLabel.findAll({ 
    order: ('name').toUpperCase() 
    }) 
    .then(function (recordLabels) { 
    return res.json(recordLabels) 
    }) 
    .catch(function (err) { 
    return res.json({ error: err}) 
    }) 
}) 

答えて

1

この注文の問題は、sequelizeではなくpostgresqlに由来します。いくつかの構成では、posstgresqlは主キーまたはIDによっても順序付けされません。権限があれば、データベースのロケールを変更することができます。 link

1

enter image description here使用この:

router.get('/', function (req, res) { 
var sequelize=require('sequelize') 
RecordLabel.findAll({ 
    order:[sequelize.fn('lower', sequelize.col('name'))] 
}) 
.then(function (recordLabels) { 
    return res.json(recordLabels) 
}) 
.catch(function (err) { 
    return res.json({ error: err}) 
    }) 
}) 
+0

はTypeError:この答えで

After a query has produced an output table (after the select list has been processed) it can optionally be sorted. If sorting is not chosen, the rows will be returned in an unspecified order. The actual order in that case will depend on the scan and join plan types and the order on disk, but it must not be relied on. A particular output ordering can only be guaranteed if the sort step is explicitly chosen.

ルック35:Layer.handleで44 sequelize.colはrecordLabel.jsで機能 ではありません[as handle_request] –

+0

@KaiKeanaainaあなたの続編のバージョンは何ですか? – farhadamjady

+0

私は最新のバージョンでそれをテストし、あなたの望む通りに正しい返品を返しました – farhadamjady

関連する問題