2016-05-05 5 views
3

Wie kann ich eine Liste der Datensätze von PK in einer einzigen Abfrage mit erhalten?Abfrage mit einer ID-Liste in Bookshelf JS

sollte das Ende Abfrage äquivalent zu:

SELECT * FROM `user` WHERE `id` IN (1,3,5,6,7); 
+0

Sie bekommen haben versuche etwas wie 'model.where ('ID', [1,3,5,7,8]). fetch(). then (function() {});' –

+0

Ja, aber Syntaxfehler :) –

Antwort

6

Diese Lösung funktioniert:

AdModel 
    .where('search_id', 'IN', [1, 2, 3]) 
    .fetchAll(); 

Sie können auch die Knex Querybuilder verwenden das gleiche Ergebnis

AdModel 
.query(qb => { 
    qb.whereIn('search_id', [1, 2, 3]); 
}) 
.fetchAll(); 
+0

Danke DeadEye, ich fand die Lösung mit Knex so etwas wie knex.select ('name'). Von ('users') .whereIn ('id', [1, 2, 3]) .orWhereIn ('id' , [4, 5, 6]) –

+0

Rechts, mit knex.js ist das viel einfacher (; – DeadEye

+1

Beachten Sie, dass die Reihenfolge der Ergebnisse nicht garantiert ist, dass sie der Abfrage entsprechen. Dies ist wichtig, wenn Sie einen Batch-Loader abstrahieren, wie im Fall von https://github.com/facebook/dataloader. – Gajus

Verwandte Themen